# Lines preceded by pound signs are comments, lines starting with '->' are input lines.
# Add your parameter(s) after the ':'. DO NOT change the '-> parameter : ' part of the input line
# If you're not using a certain method, do not change its parameters

#------------------------------- Main Parameters -----------------------------------
# 1. The mode: trim (produces two trimmed files) or report (no trimmed files)
-> mode : trim 

# 2. Method Sequence: method names joined by '_'. ORDER MATTERS !!!!
# Available methods: 5adpt, lqr, tera, nsplit, mott, nperc, ncutoff, qseq0,
#                    qseqB, 3end, 5end, s2i, i2s
# s2i and i2s switch quality-scoring between Illumina and Sanger (hence i2s, s2i)   

# Recommended order of methods for any file  : nperc_lqr_5adpt_nsplit_tera 
# Recommended order of methods for qseq files: qseq0_qseqB_nperc_lqr_5adpt_nsplit_tera 
 
-> method_sequence : s2i_qseqB_5adpt_tera


# 3. input file paths [two Paired-End (PE) or Single-End (SE), see below]: 
# two Paired-End (PE) files: _1 and _2, 
-> PE_file_1 : sample_data/fastq/SRR065390_1_1st_2000reads.fastq
-> PE_file_2 : sample_data/fastq/SRR065390_2_1st_2000reads.fastq

# Note that you can list multiple files for SE_file by separating them with commas 
#-> SE_file : sample_data/fastq/SRR065390_1st_2000reads.fastq

# OR input directories if you want to trim all files in a directory. Also check the "merge" 
# and PE_filename_pattern options (8, 9).
# Merge (yes|no) = merge the trimmed input files into one, filename_pattern helps identify the _1 from the _2
# The PE_files_dir should contain ALL (_1 and _2) the paired-end files.

# -> PE_files_dir : sample_data/fastq
# -> SE_files_dir : sample_data/fastq


# 4. output directory
-> output_dir : sample_data/output_directory

# 5. (Optional) Print "discarded" reads, i.e, print the reads that were filtered out and
#   not included in the original output. Default is no. To activate, print "yes"
-> print_discarded_reads : no

# 5. min_read_length is a cutoff value. In a single file, a read is "bad" and is
# discarded if it's shorter than min_read_lenght. In a PE file pair, a pair is 
# bad if either/both reads are bad.
# TERA, Mott, 3end, and 5end cannot trim reads shorter than min_read_length.

-> min_read_length : 21

# 6. Sanger and Illumina files differ in their ascii-character to Phred quality score mapping
# of base-calls. Sanger format can encode a Phred quality score from 0 to 93 using ASCII 33 to 126,
# while Illumina 1.3+ format can encode a Phred quality score from 0 to 62 using ASCII 64 to 126. 
# In other words, the ascii character of the zero quality score, ASCII_of_zero_qual_score, is 33 for
# Sanger an 64 for Illumina. This difference is important for quality-trimming methods because they 
# have to know what each ascii character encodes in phred scores. So, ngsShoRT has 
# -ASCII_of_zero_qual_score, a variable that is set to 33 (Sanger encoding for FastQ) by default.
# If your files are Illumina 1.3+ qseq, you need to change ASCII_of_zero_qual score to 64 (Illumina) 
# from the input_file (if you’re using it) or command-line. All quality-trimming methods (lqr, tera, mott) 
# need this to function properly.

# ASCII_of_zero_qual_score is 64 for Illumina, 33 for Sanger). Default is 33 
# (Sanger). Also note that using the method s2i (Sanger to Illumina) changes 
# ASCII_of_zero_qual_score to 64, and vice versa for i2s

-> ASCII_of_zero_qual_score : 33


# 7. Convert the qseq '.' to a Fastq 'N' (both mean uncalled base). Default is yes
-> qseq_dot_to_N : yes

# 8. Merge multiple trimmed files into one (yes | no), Default is no. 
# This is used with PE/SE_files_dir option. If merge=yes, ALL merged files must have the same format
#  (either fastq or qseq). If merge=no, both formats can co-exist in the input directory

-> merge_multiple_files : no

# 9. Filename pattern. This is used with the PE_files_dir option to help differentiate the _1 from _2
#  The pattern can consist of any characters (I use x) EXCEPT '_', '.',  and 'N', because they're how the 
# _1 and _2 will be differentiated as N = 1/2. 
#   One example is the standard qseq filename pattern x_x_N_x_x.x, which  stands for PE names like 
# s_8_1_1029_qseq.txt and s_8_2_1029_qseq.txt. 
# Let's say your files are named differently, like SRR1234_foo_1.fastq and SRR1234_foo_2.fastq. The pattern
# is then 'x_x_N.x'. ngShoRT will then know that the 1/2 of paired-end name is at the 3rd character preceded by '_'
# in any filename. 

-> PE_filename_pattern : x_N_x_x.x

# 10. Header tag: append "|trimmed_by_m1_m2_m3" (m1,m2, m3 are the used methods) to the header
#                  of each read (Default = yes). See manual for more info on header content.
-> header_tag : yes				  

#-----------------------------------------------------------------------------------



#=============================== METHOD PARAMETERS =================================  

# [# a  -----------------  nperc (trim reads with high % of Ns) -------------------]
# Deafault value is 50 (%). We recommend using it early in the method sequence
-> Nperc_cutoff : 50
		
# [# b  ----------------  lqr: trim Low quality reads -----------------------------]
# LQS is the Low Quality score cutoff, LQS_Perc is the percentage cutoff of bases whose
# quality score is <= LQ. A read with >= LQS_Perc% of LQ reads is trimmed out. 
-> LQS : 4
-> LQS_Perc_in_read_cutoff : 50

		
# [# c --TERA: Trimming the 3'-end bases on running average quality score ---------]
# Default value is 2, which covers the ascii value of 'B'-scored bases for qseq 
-> tera_avg : 2

		
# [# d  --------------  5adpt: Trimming 5' adapter sequences  ---------------------] 
# Default match percentage is 100 (%).
# furthest_allowed_index_for_adapter_match depends on the read length (rl) for your 
# set. We use a default value of 'full' meaning the entire read's length 

# adpt_action is what to when the adpt sequence is detected on a read: kr (kill read),
# or ka (kill bases after the detected adapter sequence)

# 5adpt_file can either take a lib_code matching one of our built-in libraries for
# illumina and 454 (pyrosequencing) primers, or a user-provided file that MUST BE BASED
# ON THE five_prime_adapter_seq_TEMPLATE.txt file. 

# The valid library codes are: i-g (Illumina genomic, Default), i-p (Illumina PE), i-m
# (Illumina multiplex), i-n (Illumina NlaIII), i-d (Illumina DpnII), i-r (Illumina sRNA),
# p-b (pyroseq basic), p-r (pyroseq sRNA), p-p (pyroseq PE), p-a (pyroseq amplicon)
               
-> 5adpt_file : i-g
-> 5adpt_match_percentage : 100
-> 5adpt_furthest_allowed_index_for_adapter_match : full 
-> 5adpt_action : ka		

# OPTIONAL MODIFIERS -- see README.txt. These make the matching process more accurate. 
# By Default, adpt_max_match_len_diff = 3 means that the difference in length between
# the adapter sequence and the target sequence on the read cannot be more than 3 bases.
-> 5adpt_ins : 
-> 5adpt_del : 
-> 5adpt_sub : 
-> 5adpt_max_match_len_diff : 3
		
# [# e  --------------  nsplit: remove N-blocks and split reads around them -------]
# nsplit_len is the minimum length of the N block that should be split
-> nsplit_len : 5 
		
		
# [# f  ---------------- mott: Richard-Mott trimming of reads ---------------------]
# Mott-trim takes a read and finds the running sum of LmP (see manual.doc) for each 
# base. Mott tries to extract a string of bases starting from the base where 
# sumLmP >=0 to the base with the highest sumLmP. However, it stops at min_read_length

# LmP = mott_limit - Perror[base], where Perror[base] = 10 ^(-Q/10), where Q = quality
# score. So, when LmP = 0, mott_limit = 10^(-Q/10)

#  Q_cuotff = 0  =>   mott_limit =~ 1
#  Q_cuotff = 2  =>   mott_limit =~ 0.6  (Default value)
#  Q_cutoff = 4  =>   mott_limit =~ 0.35

-> mott_limit : 0.6


# [# g  ------------- ncutoff: remove reads with >= ncutoff_len N bases ---------------]
-> ncutoff_len : 50

# [# h --------- qseq0: discard 0-filter reads (Illumina-scored reads ONLY) -------]
# qseq format is a single, tab-delimited string of 11 parts. The 11th part is the 
# filtering flag, where 0 = read failed filtering. Such reads should be removed. 
# This method has no parameters. Simply add it to the methods list to work


# [# i ------------- qseqB: trim B-scored bases (Illumina-scored reads ONLY) -------]
# This method detects B-scored bases in either two modes: global (count the number
# of bases in the entire read), or local (find a string of B-scored bases that's >= 
# num_B_cutoff). 
# Two possible actions ensue: ka (remove the B-string, and kill all bases after it), 
# or kr (kill the read). Note that global mode allows only kr. 

-> num_B_cutoff : 5
-> qseqB_mode : local
-> qseqB_axn : ka


# [# j  ----------------- 3end: trim N bases from the 3'-end of ALL reads ----------]
# Note that the same number applies to ALL reads in the read file(s)
-> n_3end : 

# [# k  ----------------- 5end: trim N bases from the 5'-end of ALL reads ----------]
# Note that the same number applies to ALL reads in the read file(s)
-> n_5end :

# [# l ----------------- rmHP: trim out homopolymers ----------]
# Determine minimum homopolymer length (ml). Default is 8
-> rmHP_ml : 8
# In one string, list bases that can form homopolymers. Default is all of them 
-> rmHP_bases : agct

