-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathallParameters.template
More file actions
857 lines (675 loc) · 41.6 KB
/
Copy pathallParameters.template
File metadata and controls
857 lines (675 loc) · 41.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
################################################################################
################################################################################
# This is an IGGPIPE TEMPLATE FILE giving an example of how to define each
# IGGPIPE parameter. DO NOT EDIT THIS FILE. COPY THIS FILE to a new file name
# that suggests the analysis you are doing, such as name that uses the single
# letters to be defined herein to represent each genome. For example, if you
# are doing an analysis of tomato and S. pennellii genomes and you plan to use
# the letters H and P to represent those two genomes, you might copy it to a
# new file name as follows:
# cp allParameters.template allParameters.HP
# After copying this file to your own file name, EDIT YOUR NEW FILE and set the
# parameters to the values required for your analysis. Read through the first
# part of the file carefully to see what needs to be changed. Parameters that
# usually don't need to be changed have been placed at the end of this file, and
# a comment block marks the place where those parameters begin. Your focus will
# be on setting parameters in the beginning part of this file.
# Paths, directories, filenames, and program parameters required for running
# the IGGPIPE pipeline are defined here, including paths to input files that
# are used, and some of the output files that are generated. (Paths to programs
# used by IGGPIPE are defined in file allPathParameters.ours, which is set up
# one time only during IGGPIPE installation.)
# This file has been filled in with actual values as EXAMPLES. These examples
# are for analyzing tomato (H) ITAG2.4 and S. pennellii (P) V2.0 genomes.
# As you edit your new file, CHANGE these values to appropriate ones for your
# analysis.
# You use this parameter file to run the IGGPIPE pipeline by specifying this
# parameter file's name in a 'make' command using the PARAMS command line
# argument. See the RUN user guide for instructions on running the pipeline.
# Many paths and filenames defined here are located in or under the pipeline
# install directory, and the definitions often specify a pathname or filename
# relative to it. If a filename doesn't start with "/", it is relative to the
# install directory.
# All definitions in this file are 'make' variable assignments. A variable is
# replaced by its value when you write $(VARIABLE_NAME). Some variables are
# defined here and then used in $() constructs in subsequent definitions of
# other variables. You can add as many of your own variables as you want to
# this file to help you define directory and file names.
# All system environment variables are automatically predefined as make variables
# by 'make' itself, so you can use $(ENVIRONMENT_VARIABLE_NAME) to access the
# value of an environment variable.
#@@ Each parameter has a BOLD COMMENT STARTING WITH "#@@" saying whether that
#@@ parameter should be changed, seldom needs changed, already has a reasonable
#@@ value, etc. This will guide you as to what needs to be changed.
################################################################################
################################################################################
################################################################################
# Value of "k" to use, i.e. the length of a k-mer in base-pairs. Too small a
# value will result in too few common unique k-mers. The computation time and
# memory requirements increase dramatically as this is increased. A value of
# K=14 has worked well for the tomato genome without using too much memory. A
# significantly larger genome might require use of K=15. Use an upper-case
# letter K here.
################################################################################
#@@ CHANGE THIS TO THE VALUE OF K THAT YOU WANT. A VALUE OF 14 OFTEN WORKS WELL.
K := 14
################################################################################
# Number of genomes to be analyzed. Must be 2 or more. If more than two, other
# definitions in this file that are based on genomes will need to be expanded to
# include one definition per genome.
################################################################################
#@@ CHANGE THIS TO YOUR NUMBER OF GENOMES TO BE ANALYZED.
N_GENOMES := 2
# Genome numbers, starting at 1, separated from each other by a space. If
# N_GENOMES is more than 2, add additional numbers to this. Believe it or not,
# it seems to be very difficult to generate this sequence automatically in 'make',
# as, despite all its macros, it has no concept of arithmetic and counting.
#@@ CHANGE THIS TO 1 2 3 (etc. up to N_GENOMES)
GENOME_NUMBERS := 1 2
################################################################################
# Letters to assign to genomes. Choose one UPPER CASE letter to represent each
# genome. The first genome, referred to as genome 1, is the REFERENCE GENOME.
# The reference genome can be chosen at random if there is not one genome that
# is the obvious one. It would be best to choose one with few sequence IDs, so
# if one genome has chromosome IDs (i.e. pseudomolecules) and the other(s) have
# scaffolds, choose the one with chromosomes as the reference.
#
# Genome 1 data columns will appear first in output files, genome 2 data columns
# second, and so on.
#
# You must define exactly N_GENOMES definitions, with a different UPPER CASE
# letter for each one.
################################################################################
# In this example, we use two genomes, the Heinz tomato genome (letter H) and
# the Solanum pennellii genome (letter P). The tomato genome is the reference
# genome.
#@@ CHANGE THESE (AND ADD MORE IF NECESSARY) TO ASSIGN LETTERS TO YOUR GENOMES.
GENOME_1 := H
GENOME_2 := P
# Combine the above letters together with one space between each letter.
# For example, if GENOME_1 is "X", GENOME_2 is "Y", and GENOME_3 is "Z", then
# GENOME_LETTERS will be "X Y Z".
#@@ DO NOT CHANGE THIS.
GENOME_LETTERS := $(foreach X,$(GENOME_NUMBERS),$(GENOME_$(X)))
# Combine the above letters together with no spaces into a single string.
# For example, if GENOME_1 is "X", GENOME_2 is "Y", and GENOME_3 is "Z", then
# GENOME_LETTERS_SQUISHED will be "XYZ".
#@@ DO NOT CHANGE THIS.
GENOME_LETTERS_SQUISHED := $(shell echo "$(GENOME_LETTERS)" | sed "s/ //g")
################################################################################
# Path of main output directory where output files will be placed.
################################################################################
# It is useful to include the genome letters and the value of k in the name, so
# that a different run with different genomes or k will produce output in a
# different folder. For example, with genome letters "X" and "Y" and with K set
# to "14", the output directory name would be "outXY14". This directory will be
# created when the pipeline is run if it doesn't already exist.
#@@ THIS DOES NOT NEED TO BE CHANGED UNLESS YOU PREFER A DIFFERENT OUTPUT
#@@ DIRECTORY, BUT IF NOT CHANGED, TAKE NOTE OF THE DIRECTORY NAME.
DIR_IGGPIPE_OUT := out$(GENOME_LETTERS_SQUISHED)$(K)
################################################################################
# Paths of FASTA files containing the genomes to be analyzed, and for output
# files that are generated from the FASTA files.
################################################################################
# Path to parent folder of all genome data.
#@@ YOU ONLY NEED TO DEFINE THIS IF YOU USE IT IN OTHER ASSIGNMENTS BELOW.
#@@ OTHERWISE, DELETE THIS.
# (This example assumes that an environment variable named "BRADYLAB" has been
# defined, that gives the path to a high-level directory.)
DIR_GENOME_DATA := $(BRADYLAB)/Genomes
# Directories containing the FASTA files for the N_GENOMES genomes.
#@@ YOU ONLY NEED TO DEFINE THIS IF YOU USE IT IN OTHER ASSIGNMENTS BELOW.
#@@ OTHERWISE, DELETE THIS.
# (This example uses the DIR_GENOME_DATA variable above to define the directories
# containing files for the two genomes to be run through the IGGPIPE pipeline.)
DIR_GENOME_DATA_1 := $(DIR_GENOME_DATA)/Soly/ITAG2.4_release
DIR_GENOME_DATA_2 := $(DIR_GENOME_DATA)/Sope/V2.0genome
# Paths of the N_GENOMES FASTA files containing the genome sequences being
# analyzed. Each variable name must be the string "PATH_GENOME_FASTA_" followed
# by the genome number.
#@@ SET THESE TO YOUR GENOME FASTA FILE PATHS.
# The ITAG2.4_genomic.fasta genome is the latest tomato genome release from solGenomics.net.
# The Spenn.fasta genome is the recent S. pennellii genome release from solGenomics.net.
PATH_GENOME_FASTA_1 := $(DIR_GENOME_DATA_1)/ITAG2.4_genomic.fasta
PATH_GENOME_FASTA_2 := $(DIR_GENOME_DATA_2)/Spenn.fasta
################################################################################
# Pipeline command timing.
################################################################################
# Set TIME_CMDS to YES if you wish to time each pipeline command, NO if not.
# When set to YES, each pipeline command will be executed with the shell command
# '(time <command>) 2>&1'. The 'time' program executes <command> and times it,
# and when it finishes, it prints out the amount of time it used (on stderr,
# which is redirected to stdout with 2>&1), in this format:
# real 0m0.002s
# user 0m0.000s
# sys 0m0.001s
# These values indicate the amount of time required to execute the command. For
# details on their interpretation, see 'man time'.
#@@ CHANGE THIS TO "NO" IF YOU DON'T WANT TO SEE COMMAND TIMING INFO IN THE OUTPUT.
TIME_CMDS := YES
################################################################################
# Parameters affecting the IGG marker algorithm and likely to be changed by the
# user.
#
# All parameters here should be carefully reviewed and set by the user.
################################################################################
# Minimum acceptable length of an LCR in base-pairs. This is normally equal
# to the minimum acceptable amplicon size AMIN (defined below), although it
# could be larger. Smaller values make more LCRs and increase computation time.
#@@ YOU PROBABLY WANT TO SET THIS EQUAL TO YOUR MINIMUM ACCEPTABLE AMPLICON LENGTH.
LMIN := 250
# Maximum distance in bp between two adjacent k-mers in an LCR. If two adjacent
# k-mers are farther apart than this in any genome, the k-mers serve to split the
# LCR into two LCRs at that point. This value limits the maximum length of one
# indel within an Indel Group or LCR. This is normally set equal to the maximum
# acceptable amplicon size AMAX (defined below), although it could be larger.
#@@ YOU PROBABLY WANT TO SET THIS EQUAL TO YOUR MAXIMUM ACCEPTABLE AMPLICON
#@@ LENGTH.
DMAX := 800
# Minimum IGG marker amplicon size in any genome.
#@@ SET THIS EQUAL TO YOUR MINIMUM ACCEPTABLE AMPLICON LENGTH.
AMIN := 250
# Maximum IGG marker amplicon size in any genome. The amplicon size will always
# be less than DMAX also. This also limits the maximum Indel Group size.
#@@ SET THIS EQUAL TO YOUR MAXIMUM ACCEPTABLE AMPLICON LENGTH.
AMAX := 800
# For a given IGG marker, when the smallest amplicon size is AMIN, this is the
# minimum ADDITIONAL bp's of size required for the next larger amplicon. If
# there are only two genomes or if NDAMIN is 2 (defined below), then if one
# genome's amplicon size is AMIN, the other's must be at least AMIN+ADMIN.
# For the purpose of finding Indel Groups only, this is the minimum Indel
# Group size that will ever be found.
#@@ SET THIS EQUAL TO YOUR MINIMUM ACCEPTABLE DIFFERENCE IN AMPLICON LENGTHS WHEN
#@@ ONE AMPLICON'S LENGTH IS EQUAL TO AMIN AND ANOTHER IS AMIN+ADMIN.
ADMIN := 100
# For a given IGG marker, when the largest amplicon size is AMAX, this is the
# minimum FEWER bp's of size required for the next smaller amplicon. If there
# are only two genomes or if NDAMIN is 2 (defined below), then if one genome's
# amplicon size is AMAX, the other's must be no more than AMAX-ADMAX.
#
# Interpolation is linear between ADMIN and ADMAX. The amplicon sizes for
# each genome are sorted smallest first, then the interpolated ADMIN/ADMAX
# value is applied to each amplicon except the last, and if fewer than NDAMIN
# genomes meet the test, the marker is discarded.
#
# The idea behind ADMIN/ADMAX is to require amplicons to be different enough in
# size that they can be easily distinguished on a gel, but that required size
# difference may scale up as the amplicon sizes grow.
#
# For the purpose of finding Indel Groups only, this should be set equal to ADMIN.
#@@ SET THIS EQUAL TO YOUR MAXIMUM ACCEPTABLE DIFFERENCE IN AMPLICON LENGTHS WHEN
#@@ ONE AMPLICON'S LENGTH IS EQUAL TO AMAX AND ANOTHER IS AMAX-ADMAX.
ADMAX := 200
# Minimum number of distinct amplicon sizes for each marker. Set this to the
# number of genomes if you want distinct amplicon sizes for each genome. Set
# it to a smaller value (>= 2) if fewer distinct sizes are acceptable. For
# two genomes, this is always set to 2. If for example there were 3 genomes
# and you set this to 3, all amplicons of a marker must be a different size,
# but if you set this to 2, as long as two genomes have different amplicon
# sizes, the marker is accepted (i.e. two genomes might have the same or
# similar-sized amplicons, but the third genome would have a different size).
#@@ SET THIS EQUAL TO N_GENOMES IF YOU WANT ALL GENOMES TO PRODUCE DIFFERENT
#@@ AMPLICON LENGTHS. OTHERWISE, SET IT TO THE MINIMUM NUMBER OF ACCEPTABLE
#@@ DIFFERENT AMPLICON LENGTHS.
NDAMIN := 2
# Two files of Indel Groups are produced, one of overlapping Indel Groups and
# another of non-overlapping Indel Groups. Likewise, two files of IGG markers
# are produced, one of overlapping markers and another of non-overlapping.
# You may be interested in one or the other, overlapping or non-overlapping,
# or perhaps both.
#
# To explain the meaning of "overlapping" in this context, consider two Indel
# Groups or markers that follow one after another, the first bounded by k-mers
# A and B, and the second bounded by k-mers C and D. Suppose that both AB and
# CD satisfy the parameters above such as AMIN and AMAX. Now, it is entirely
# possible that AD also satisfies those parameters. If it does, it will be
# included in the overlapping Indel Group and IGG marker files along with AB
# and CD, even though its amplicon includes both the AB and the CD amplicon
# regions, i.e. there is redundancy in the Indel Groups and IGG markers within
# the overlapping files.
#
# The files of non-overlapping Indel Groups and IGG markers are created by
# removing some Indel Groups or IGG markers from the set of overlapping ones,
# so that after removal none of the Indel Groups or IGG markers overlap.
#
# Two different methods are provided for determining which Indel Groups and
# markers to remove, and the following parameter chooses the method. It must
# be the value MIN or else MAX, meaning:
# MIN: when a set of Indel Groups/markers overlaps, the SHORTEST Indel
# Group/marker within the genome being tested is retained, and any Indel
# Groups/markers that overlap it are removed. (I.e. shortest amplicons).
# MAX: when a set of Indel Groups/markers overlaps, the LONGEST Indel
# Group/marker within the genome being tested is retained, and any Indel
# Groups/markers that overlap it are removed. (I.e. longest amplicons).
# That removal process is repeated until no more Indel Groups/markers overlap.
# It is repeated for each genome as it is possible two Indel Groups/markers
# might overlap in one genome but not another.
#
# Therefore you would set this to MIN if you want to bias towards getting
# shorter amplicons, and to MAX to bias towards longer ones.
#@@ CHANGE THIS TO YOUR CHOICE OF THE TWO
OVERLAP_REMOVAL := MAX
# Maximum deviation in base pairs from expected amplicon size of off-target
# amplicons discovered by e-PCR (electronic PCR) testing of the candidate
# markers. Set this to a value where, if there is an off-target amplicon
# whose size is within this amount of the target amplicon size, then you want
# that marker to be marked bad and deleted.
#@@ SET THIS TO THE LARGEST AMPLICON SIZE POSSIBLE WITH YOUR PCR PARAMETERS SUCH
#@@ AS THE EXTENSION TIME AND POLYMERASE POLYMERIZATION RATE.
EPCR_MAX_DEV := 2500
#@@#############################################################################
#@@#############################################################################
#@@#############################################################################
#@@ Nothing below this point has to be changed. Unless you are studying the
#@@ parameters in detail, skip the remaining sections.
#@@
#@@ The following section collects together the parameters which are next most
#@@ likely to be changed, if you do need to change parameters.
#@@#############################################################################
#@@#############################################################################
#@@#############################################################################
################################################################################
# Parameters affecting the IGG marker algorithm but less likely to be changed by
# the user.
################################################################################
# Minimum number of sequential k-mers required to call a locally conserved
# region (LCR). The larger this number, the less likely that LCRs will be
# called that are not actually conserved regions, and the fewer the number
# of LCRs that will be called. Numbers too large will limit the number of
# markers created. Smaller values make more LCRs and increase computation
# time. Since e-PCR testing will validate all candidate markers, there is
# no reason not to set this to its minimum of 2 if you are only making
# markers. If you want LCRs for another purpose such as a reliable Indel
# Group list or for doing whole genome alignment, a larger value such as 4
# is advised.
# This should be at least two more than twice MINFLANK (defined below),
# since that is the minimum number of k-mers in an LCR that could result
# in an Indel Group call.
#@@ THIS IS A REASONABLE VALUE FOR THIS PARAMETER.
KMIN := 2
# Minimum distance in bp between two adjacent k-mers in an LCR. If two k-mers are
# closer than this, the second one of the close pair is discarded. This prevents
# a series of back-to-back k-mers in a conserved region from satisfying the KMIN
# setting or MINFLANK setting. A value in the range of k would be reasonable.
#@@ THIS IS A REASONABLE VALUE FOR THIS PARAMETER.
DMIN := 10
# Minimum number of k-mers to the left of the left-side Indel Group k-mer and to
# the right of the right-side Indel Group k-mer. May be 0 for none. The Indel
# Group k-mers are the two common unique k-mers, one on each end of an Indel
# Group, at which primers are designed. An Indel Group can require only those
# two k-mers, if MINFLANK is 0. The number of k-mers that must be present in
# the LCR to create a candidate marker is at least 2+2*MINFLANK. By setting
# this to a value larger than 0, you might decrease the odds that a single
# random common unique k-mer on the LCR could trigger creation of an IGG marker,
# but since e-PCR testing of candidate primers will reject bad random markers,
# there is no reason not to leave this set to 0. For the purpose of finding
# Indel Groups only, you may want to use a larger value than 0.
#@@ THIS IS A REASONABLE VALUE FOR THIS PARAMETER.
MINFLANK := 0
# Number of base pairs of additional sequence to retrieve on each side of each
# of the two anchor k-mers of an IGG marker, for the purpose of designing
# primers. Primer parameters such as minimum and maximum size, and all other
# parameters, are set in a parameter file used by primer3 to design the primer.
# The value 2*EXTENSION_LEN + k is the maximum possible primer length. Set
# EXTENSION_LEN large enough that you create multiple sites at which primers
# could possibly be found. The maximum allowed setting for this is 50. If
# this is >= minimum primer length, then it is possible a primer will be made
# in the extension region and not including ANY of the unique k-mer bases.
# This might make the primer less likely to be unique, but the e-PCR testing
# of the primers will catch those situations and reject those primers. A
# value of 20 with k=14 provides 54 base-pairs of sequence in which to design
# a primer. Note that N's are placed at positions where genomes differ in the
# extended regions on either side of the k-mer, so that primer3 will not design
# a primer on that position. This means many candidate markers will fail to get
# a primer designed and so will be rejected. All bases of the k-mer are of
# course identical across all genomes.
#@@ THIS IS A REASONABLE VALUE FOR THIS PARAMETER.
EXTENSION_LEN := 20
# Size, in base pairs, of a "hash word" in the e-PCR program. This parameter has
# two different effects, unrelated unfortunately. First, it determines the size
# of the data structure used for searching sequence data for primers, and in this
# context, a larger value uses more memory but can speed up the e-PCR operation,
# while a smaller value uses less memory but can cause inefficient use of hash
# tables, resulting in slow operation. Second, it sets the number of base pairs
# starting at the 3' end of each primer, which must match EXACTLY with no gaps.
# In this context, a larger value means fewer off-target hits will be identified
# and removed as ambiguous markers, while a smaller value means more off-target
# hits will be identified and more markers will be removed as being ambiguous.
# Base pairs beyond this number in the primer are subject to the next two
# parameters, EPCR_MAX_MISMATCH and EPCR_MAX_GAPS. The e-PCR program uses a
# default of 7 for this. It probably shouldn't be made smaller than that, and
# probably should be made larger. Larger values will result in more markers.
#@@ THIS IS A REASONABLE VALUE FOR THIS PARAMETER.
EPCR_WORD_SIZE := 8
# Maximum number of off-target primer mismatches, in base pairs, within the
# primer outside of the EPCR_WORD_SIZE base pairs at the 3' end, during e-PCR
# (electronic PCR) testing of the candidate markers. Set this to a size where,
# if there is an off-target approximate primer match with this many or fewer
# mismatched bases, then you want that marker to be marked bad and deleted.
# Larger values increase computation time and reduce number of markers obtained.
#@@ THIS IS A REASONABLE VALUE FOR THIS PARAMETER.
EPCR_MAX_MISMATCH := 3
# Maximum number of off-target primer match gaps, in base pairs, within the
# primer outside of the EPCR_WORD_SIZE base pairs at the 3' end, during e-PCR
# (electronic PCR) testing of the candidate markers. Set this to a size where,
# if there is an off-target approximate primer match with this many or fewer
# gaps in the mismatch, then you want that marker to be marked bad and deleted.
# Larger values increase computation time and reduce number of markers obtained.
#@@ THIS IS A REASONABLE VALUE FOR THIS PARAMETER.
EPCR_MAX_GAPS := 1
# Prefix to use for the marker IDs. Markers are numbered sequentially, and an ID
# column in the marker output file consists of the following prefix, followed by
# the sequential number of each marker. This prefix lets you assign different
# IDs during different runs of IGGPIPE using different genomes or other parameters.
#@@ THIS IS A REASONABLE VALUE FOR THIS PARAMETER.
ID_PREFIX := IGG_$(GENOME_LETTERS_SQUISHED)$(K)_
# For plotting number and density of final markers, this parameter sets the
# minimum value in the marker NDA column (which ranges from NDAMIN to the number
# of genomes) of the markers to be plotted. For example, if you are making both
# 2-way and 3-way markers (3 genomes with NDAMIN=2) and want to plot only the
# 3-way markers count/density, set this to 3.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PLOT_NDAMIN := $(NDAMIN)
# For plotting number and density of final markers, this parameter sets the
# alpha intensity with which black lines are drawn on chromosomes at marker
# positions. This must be greater than 0 and no more than 1. At 1, a single
# line is black. As the value moves towards 0, and single line is lighter and
# lighter gray, and multiple lines must be plotted on top of each other to
# achieve black pixels. For example, 0.25 would need 4 markers to get to black.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PLOT_ALPHA := 0.25
################################################################################
# Parameters used if the 'make IndelsSNPs' command is run to find Indels and
# SNPs between the genomes.
################################################################################
# Path of input file for aligning LCRs or IndelGroups or Markers and locating the
# Indels and SNPs in the alignment. Used only if 'make IndelsSNPs' command is run.
# This path can be any of three different files, shown here commented out: the LCBs
# file (for capturing Indels and SNPs even in regions that do not have an amplicon
# size difference), the non-overlapping IndelGroups file (for capturing Indels and
# SNPs only in regions with the specified amplicon size difference, including
# regions that may be rejected as markers), or the non-overlapping markers file
# (for capturing Indels and SNPs only in regions where candidate markers have
# been found).
# The output files containing the Indel AND SNP positions are the same name as the
# input file with the .suffix replaced with the suffix ".indels.tsv" and ".snps.tsv".
# Copy and uncomment the ONE you want to use to find Indels and SNPs if you intend
# to run 'make IndelsSNPs'. Note: these names refer to symbols defined later, so
# they use "=" instead of ":=".
#@@ THESE DO NOT NEED TO BE CHANGED.
#PATH_INDELS_SNPS_INPUT_FILE = $(PATH_LCB_FILE)
#PATH_INDELS_SNPS_INPUT_FILE = $(PATH_NONOVERLAPPING_INDEL_GROUPS_FILE)
#PATH_INDELS_SNPS_INPUT_FILE = $(PATH_NONOVERLAPPING_MARKERS_FILE)
# In this example we use the markers file.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PATH_INDELS_SNPS_INPUT_FILE = $(PATH_NONOVERLAPPING_MARKERS_FILE)
# For finding Indels and SNPs with 'make IndelsSNPs', these parameters set the
# maximum number of Indels and SNPs per Kbp of reference genome sequence that
# may exist in an alignment and still examine the alignment for Indels and SNPs.
# If more than this number of Indels or SNPs is found, that alignment is ignored.
# Set these to reject alignments that have an anomalously high number of Indels
# or SNPs, which might indicate a false positive LCR, Indel Group, or marker and
# an alignment of essentially random sequence. When random sequences ARE aligned,
# they have minimum Indel and SNP counts of around 10 and 30 per Kbp, respectively.
#@@ THIS DOES NOT NEED TO BE CHANGED.
MAX_INDELS_PER_KBP := 10
MAX_SNPS_PER_KBP := 30
# For finding Indels and SNPs with 'make IndelsSNPs', this parameter can be set
# TRUE to scramble the sequences of each genome except the reference genome, in
# order to measure the statistics on the number of Indels and SNPs found in random
# sequence (which is displayed at the end when 'make IndelsSNPs' is run). If this
# is set TRUE, then set the above two parameters to 500 and 1000 respectively.
#@@ THIS DOES NOT NEED TO BE CHANGED.
SCRAMBLE_SEQUENCE := FALSE
################################################################################
# Output directory of main output files.
################################################################################
# Path to the directory where the LCR, Indel Group, and marker output files will
# be placed.
#@@ THIS DOES NOT NEED TO BE CHANGED.
DIR_MAIN_OUTPUT := $(DIR_IGGPIPE_OUT)
################################################################################
# Paths of k-mer data output files.
################################################################################
# Directory in which to place k-mer data output files. This directory will be
# created if it doesn't exist.
#@@ THIS DOES NOT NEED TO BE CHANGED.
DIR_KMERS := $(DIR_IGGPIPE_OUT)/Kmers
# Prefix, including directory, of output files that will be generated containing
# k-mer information. These files are created for each genome:
# 1. a list of unique k-mers in the genome:
# <this prefix><genome_number>.kmers
# 2. a text file of k-mer statistics:
# <this prefix><genome_number>.stats
# 3. a list of SORTED unique k-mers in the genome:
# <this prefix><genome_number>.sorted
# 4. A list of positions of common unique k-mers in the genome:
# <this prefix><genome_number>.isect
# 5. A list of common unique k-mers of these genome and preceding genomes
# <this prefix><genome_number>.merge
#@@ THIS DOES NOT NEED TO BE CHANGED.
PFX_KMERS_DATA_FILE := $(DIR_KMERS)/Kmers_
# Path of the k-mer text file containing the common unique k-mers with genomic
# positions in each genome, sorted by reference genome position. This file will
# be created.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PATH_COMMON_UNIQUE_KMERS := $(DIR_KMERS)/common.unique.kmers
################################################################################
# Paths of primer data files.
################################################################################
# Path of primer3 settings file. You must create this file by copying file
# primer3settings.default.txt, which is a modified version of the settings file
# named primer3web_v4_0_0_default_settings.txt that is part of the primer3
# V2.3.6 distribution. The changes made to that file were:
# 1. Changed the descriptive string P3_FILE_ID
# 2. Added PRIMER_THERMODYNAMIC_PARAMETERS_PATH to point to primer3_config
# subfolder in installed primer3 distribution.
# 3. Changed PRIMER_EXPLAIN_FLAG from 1 to 0.
# 4. Changed PRIMER_PRODUCT_SIZE_RANGE to twice PRIMER_MIN_SIZE followed by
# "-300", e.g. 36-300
# 5. Changed PRIMER_NUM_RETURN from 5 to 1.
# 6. Changed PRIMER_GC_CLAMP from 0 to 1.
# COPY primer3settings.default.txt to the file name given here, then EDIT it to
# set PRIMER_THERMODYNAMIC_PARAMETERS_PATH to the path of the primer3_config
# directory that was included in the primer3 distribution. You can change any
# other primer design parameters you want, including the above (except leave
# PRIMER_NUM_RETURN at 1; only one primer pair per marker is retained). Refer
# to the primer3 manual for an explanation of all the parameters. Refer to
# IGGPIPE install instructions for more details.
# This is normally in the IGGPIPE installation directory.
#@@ THIS DOES NOT NEED TO BE CHANGED BUT THE FILE MUST BE COPIED AND EDITED.
PATH_PRIMER3_SETTINGS := primer3settings.txt
# Directory in which to place these files. This directory will be created if it
# doesn't exist.
#@@ THIS DOES NOT NEED TO BE CHANGED.
DIR_PRIMER_DATA := $(DIR_IGGPIPE_OUT)/Primers
# Path of data file to be created containing sequence data for use by primer3
# when designing primers.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PATH_PRIMER3_IN := $(DIR_PRIMER_DATA)/Primer3In.txt
# Path of data file to be created by primer3 containing primer design results.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PATH_PRIMER3_OUT := $(DIR_PRIMER_DATA)/Primer3Out.txt
################################################################################
# Filename prefixes of main output files.
################################################################################
# Filename prefix of LCR data file and bad K-mer data file.
#@@ THESE DO NOT NEED TO BE CHANGED.
PFX_LCR_FILE := LCRs
PFX_BAD_KMERS_FILE := BadKmers
# Filename prefixes of Indel Groups data files.
#@@ THESE DO NOT NEED TO BE CHANGED.
PFX_OVERLAPPING_INDEL_GROUPS_FILE := IndelGroupsOverlapping
PFX_NONOVERLAPPING_INDEL_GROUPS_FILE := IndelGroupsNonoverlapping
# Filename prefix of IGG marker file, for markers prior to e-PCR verification.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PFX_NONVALIDATED_MARKER_FILE := NonvalidatedMarkers
# Filename prefix of e-PCR bad marker file.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PFX_BAD_MARKER_ERROR_FILE := MarkerErrors
# Filename prefixes of "good" IGG marker files, with bad (by e-PCR) markers removed.
#@@ THESE DO NOT NEED TO BE CHANGED.
PFX_OVERLAPPING_MARKERS_FILE := MarkersOverlapping
PFX_NONOVERLAPPING_MARKERS_FILE := MarkersNonoverlapping
# Filename prefixes of IGG marker count and density plot files.
#@@ THESE DO NOT NEED TO BE CHANGED.
PFX_MARKER_COUNTS_FILE := MarkerCounts
PFX_MARKER_DENSITY_FILE := MarkerDensity
# Filename prefix of LCB data file.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PFX_LCB_FILE := LCBs
################################################################################
# Filename suffixes of main output files.
################################################################################
# Filename suffixes for the main output files are defined here. These suffixes
# grow longer and longer as you move down the page here, each containing the
# previous one and adding to it. These are long because they include as part
# of the filename all of the parameter values used to make the file. These
# prefixes form UNWIELDY file names that are not really necessary, but are
# useful if you try different parameter values and want to keep track of the
# different output files. However, if you only plan to experiment with a
# limited number of parameter values, you could simplify these prefixes to
# only include those parameter values as part of the prefix. Or, you can
# make the prefixes be very simple or even empty, if you want simple file
# names and will delete or archive existing files when you make parameter
# changes.
# An advantage of putting parameter values that change into the file name is
# that, when you make a parameter change, 'make' will rebuild only the files
# it needs to, and the ones whose name remains the same because they were built
# at an earlier step whose parameters remain unchanged are not rebuilt, saving
# build time.
#@@ FOR EXAMPLE, YOU MIGHT WANT ALL PREFIXES TO BE SIMPLY _$(DMIN)_$(DMAX)
#@@ OR, A MORE COMPLEX EXAMPLE THAT INCLUDES THE e-PCR PARAMETERS IN FINAL OUTPUT FILES:
#@@ Set SFX_ constants to _$(DMIN)_$(DMAX) except leave SFX_GOOD_MARKER_FILE as-is.
# Suffix to use for the files created when LCRs are called.
# (This includes in the filename the parameter values used to find LCRs)
#@@ THIS DOES NOT NEED TO BE CHANGED.
SFX_LCR_FILE := _K$(K)k$(KMIN)L$(LMIN)D$(DMIN)_$(DMAX)
# Suffix to use for the file that holds Indel Group positions.
# (This includes all of SFX_LCR_FILE and the parameter values used to find markers)
#@@ THIS DOES NOT NEED TO BE CHANGED.
SFX_INDEL_GROUPS_FILE := $(SFX_LCR_FILE)A$(AMIN)_$(AMAX)d$(ADMIN)_$(ADMAX)N$(NDAMIN)F$(MINFLANK)
# Suffix to use for the file that holds DNA sequence around k-mers.
# (This includes all of SFX_INDEL_GROUPS_FILE and the parameter value used to extract DNA sequences)
#@@ THIS DOES NOT NEED TO BE CHANGED.
SFX_DNA_SEQS_FILE := $(SFX_INDEL_GROUPS_FILE)X$(EXTENSION_LEN)
# Suffix of IGG marker file, for markers prior to e-PCR verification.
# (This includes all of SFX_DNA_SEQS_FILE and it should include the parameters
# used when making primers, but those are in the primer parameters file. We
# should use a separate primer parameters filename for each run, and include
# that filename within this filename, but we don't, we assume the same primer
# parameter file always. If it changes, user had better clean the directories
# before doing a make.)
#@@ THIS DOES NOT NEED TO BE CHANGED.
SFX_NONVALIDATED_MARKER_FILE := $(SFX_DNA_SEQS_FILE)
# Suffix to use for the files that hold candidate IGG marker primers, both
# before and after e-PCR testing, and marker density plots.
# (This includes all of SFX_NONVALIDATED_MARKER_FILE and the parameter values used for e-PCR)
#@@ THIS DOES NOT NEED TO BE CHANGED.
SFX_GOOD_MARKER_FILE := $(SFX_NONVALIDATED_MARKER_FILE)V$(EPCR_MAX_DEV)W$(EPCR_WORD_SIZE)M$(EPCR_MAX_MISMATCH)G$(EPCR_MAX_GAPS)
# Suffix to use for the files created when LCBs are created.
# (No parameters are needed for conversion of LCRs to LCBs, so just the suffix here.)
#@@ THIS DOES NOT NEED TO BE CHANGED.
SFX_LCB_FILE := $(SFX_LCR_FILE)
################################################################################
# Full pathnames of main output files. These pathnames are formed by joining
# DIR_MAIN_OUTPUT/PFX_*/SFX_*, where all of these variables were defined
# immediately above. Do not change the names here. To change the names,
# change the prefixes and/or suffixes.
################################################################################
# Directory in which to place miscellaneous output files that are generated
# directly from the FASTA files. This directory will be created if it doesn't
# exist.
#@@ THIS DOES NOT NEED TO BE CHANGED.
DIR_GENOME_OUT_DATA := $(DIR_IGGPIPE_OUT)/GenomeData
# Prefix, including directory, of output files that will be generated from the
# FASTA files. These files are created for each genome:
# 1. A list of genome FASTA file sequence IDs and their lengths:
# <this prefix><genome_number>.idlens
# 2. A list of sequence contig information: for each contig, the sequence ID,
# start position, contig sequence number, and contig length:
# <this prefix><genome_number>.contigs
#@@ THIS DOES NOT NEED TO BE CHANGED.
PFX_GENOME_DATA_FILE := $(DIR_GENOME_OUT_DATA)/Genome_
# Paths of LCR data file and bad K-mer data file.
#@@ DO NOT CHANGE THESE.
PATH_LCR_FILE := $(DIR_MAIN_OUTPUT)/$(PFX_LCR_FILE)$(SFX_LCR_FILE).tsv
PATH_BAD_KMERS_FILE := $(DIR_MAIN_OUTPUT)/$(PFX_BAD_KMERS_FILE)$(SFX_LCR_FILE).tsv
# Paths of Indel Groups data files.
#@@ DO NOT CHANGE THESE.
PATH_OVERLAPPING_INDEL_GROUPS_FILE := $(DIR_MAIN_OUTPUT)/$(PFX_OVERLAPPING_INDEL_GROUPS_FILE)$(SFX_INDEL_GROUPS_FILE).tsv
PATH_NONOVERLAPPING_INDEL_GROUPS_FILE := $(DIR_MAIN_OUTPUT)/$(PFX_NONOVERLAPPING_INDEL_GROUPS_FILE)$(SFX_INDEL_GROUPS_FILE).tsv
# Path prefix of file that holds DNA sequence around k-mers, excluding only the
# suffix, which consists of "_<genome number>.dnaseqs".
#@@ DO NOT CHANGE THIS.
PFX_DNA_SEQS_PATH := $(DIR_GENOME_OUT_DATA)/$(PFX_OVERLAPPING_INDEL_GROUPS_FILE)$(SFX_DNA_SEQS_FILE)
# Path of IGG marker file, for markers prior to e-PCR verification.
#@@ DO NOT CHANGE THIS.
PATH_NONVALIDATED_MARKER_FILE := $(DIR_MAIN_OUTPUT)/$(PFX_NONVALIDATED_MARKER_FILE)$(SFX_NONVALIDATED_MARKER_FILE).tsv
# Path prefix of IGG marker e-PCR bad marker file as determined by e-PCR,
# excluding only the suffix, which consists of "_<genome number>.bad.tsv".
#@@ DO NOT CHANGE THIS.
PFX_BAD_MARKER_ERROR_PATH := $(DIR_MAIN_OUTPUT)/$(PFX_BAD_MARKER_ERROR_FILE)$(SFX_GOOD_MARKER_FILE)
# Paths of "good" IGG marker files, with bad (by e-PCR) markers removed.
#@@ DO NOT CHANGE THESE.
PATH_OVERLAPPING_MARKERS_FILE := $(DIR_MAIN_OUTPUT)/$(PFX_OVERLAPPING_MARKERS_FILE)$(SFX_GOOD_MARKER_FILE).tsv
PATH_NONOVERLAPPING_MARKERS_FILE := $(DIR_MAIN_OUTPUT)/$(PFX_NONOVERLAPPING_MARKERS_FILE)$(SFX_GOOD_MARKER_FILE).tsv
# Path prefixes of IGG marker counts and density plot files. ".pdf" is appended
# to the counts file path, and "_<genome letter>.png" is appended to the density
# file path.
#@@ DO NOT CHANGE THESE.
PFX_MARKER_COUNTS_PATH := $(DIR_MAIN_OUTPUT)/$(PFX_MARKER_COUNTS_FILE)$(SFX_GOOD_MARKER_FILE)
PFX_MARKER_DENSITY_PATH := $(DIR_MAIN_OUTPUT)/$(PFX_MARKER_DENSITY_FILE)$(SFX_GOOD_MARKER_FILE)
# Path of LCB data file.
#@@ THIS DOES NOT NEED TO BE CHANGED.
PATH_LCB_FILE := $(DIR_MAIN_OUTPUT)/$(PFX_LCB_FILE)$(SFX_LCB_FILE).tsv
# Path of input file containing DNA sequences merged with LCBs or Indel Groups or
# Markers data, used only if 'make IndelsSNPs' command is run to find Indels and SNPs.
#@@ DO NOT CHANGE THIS.
# Replace the ".<suffix>" on PATH_INDELS_SNPS_INPUT_FILE with ".withseqs.<suffix>"
# to form the output file name.
PATH_INDELS_SNPS_SEQS_FILE := $(basename $(PATH_INDELS_SNPS_INPUT_FILE)).withseqs$(suffix $(PATH_INDELS_SNPS_INPUT_FILE))
# Path of Indels and SNPs output files, used only if 'make IndelsSNPs' command is
# run to find Indels and SNPs.
#@@ DO NOT CHANGE THESE.
# Replace the ".<suffix>" on PATH_INDELS_SNPS_INPUT_FILE with ".indels.<suffix>"
# and ".snps.<suffix>" to form the output file names.
PATH_INDELS_OUTPUT_FILE := $(basename $(PATH_INDELS_SNPS_INPUT_FILE)).indels$(suffix $(PATH_INDELS_SNPS_INPUT_FILE))
PATH_SNPS_OUTPUT_FILE := $(basename $(PATH_INDELS_SNPS_INPUT_FILE)).snps$(suffix $(PATH_INDELS_SNPS_INPUT_FILE))
# Path of Indels plot file, used only if 'make plotIndels' command is run to plot
# Indel data.
#@@ THIS DOES NOT NEED TO BE CHANGED.
# Replace the ".<suffix>" on PATH_INDELS_OUTPUT_FILE with ".<pdf>" to form the
# plot file name.
PATH_INDELS_PLOT_FILE := $(basename $(PATH_INDELS_OUTPUT_FILE)).pdf
################################################################################
# Paths of debugging settings. Set these TRUE to turn on debug output from
# individual modules.
################################################################################
# Produce debug output when calling LCRs.
#@@ THIS DOES NOT NEED TO BE CHANGED.
INVESTIGATE_FINDLCRS := FALSE
# Produce debug output when analyzing LCRs for Indel Groups.
#@@ THIS DOES NOT NEED TO BE CHANGED.
INVESTIGATE_ANALYZELCRS := FALSE
# Produce debug output when getting DNA sequences at Indel Group k-mers.
#@@ THIS DOES NOT NEED TO BE CHANGED.
INVESTIGATE_GETDNASEQS := FALSE
# Produce debug output when finding primers.
#@@ THIS DOES NOT NEED TO BE CHANGED.
INVESTIGATE_FINDPRIMERS := FALSE
# Produce debug output when doing e-PCR testing of marker primer pairs.
#@@ THIS DOES NOT NEED TO BE CHANGED.
INVESTIGATE_EPCRTESTING := FALSE
# Produce debug output when removing markers identified as bad by e-PCR.
#@@ THIS DOES NOT NEED TO BE CHANGED.
INVESTIGATE_RMVBADMARKERS := FALSE
# Produce debug output when getting DNA sequences for locating Indels and SNPs.
#@@ THIS DOES NOT NEED TO BE CHANGED.
INVESTIGATE_GET_DNA_SEQS_FOR_INDELS_SNPS := FALSE
# Produce debug output when extracting and aligning sequences and locating Indels and SNPs.
#@@ THIS DOES NOT NEED TO BE CHANGED.
INVESTIGATE_ALIGN_AND_GET_INDELS_SNPS := FALSE
################################################################################
# End of file.
################################################################################