R/create_primer3_input.R

#' create_primer3_input_A: Create the input file for running primer3 using a simple set of parameters.
#' @param seqID Specify a name for your sequence.
#' @param target Specify your target sequence object.
#' @param primer3path Specify the path to the program primer3 for example: /home/emily/programs/primer3-2.3.7
#' @param outdir Specify the path of the directory in which the output file should be written.
#' @export

create_primer3_input_A <- function(seqID,
                                   target,
                                   primer3path,
                                   outdir){
        primer <- matrix(nrow = 13,
                         ncol = 1)

        params <- c(paste0("SEQUENCE_ID=",seqID),
                    paste0("SEQUENCE_TEMPLATE=",target),
                    paste("TARGET=100", str_length(target) - 100, sep = ","),
                    paste0("PRIMER_THERMODYNAMIC_PARAMETERS_PATH=",primer3path,"/src/primer3_config/", sep = ""),
                    "PRIMER_TASK=generic",
                    "PRIMER_PICK_LEFT_PRIMER=1",
                    "PRIMER_PICK_INTERNAL_OLIGO=0",
                    "PRIMER_PICK_RIGHT_PRIMER=1",
                    "PRIMER_OPT_SIZE=20",
                    "PRIMER_PRODUCT_SIZE_RANGE=50-250 100-300 301-400 401-500 501-600 601-700 701-850 851-1000",
                    "P3_FILE_FLAG=1",
                    "PRIMER_EXPLAIN_FLAG=1",
                    "=")
        primer[,1] <- params
        write.table(primer[,1], paste0(outdir,"primer3in_A"), col.names = F, row.names = F, quote = F)

}

#' create_primer3_input_B: Create the input file for running primer3 using a more detailed set of parameters.
#' @param seqID Specify a name for your sequence.
#' @param target Specify your target sequence object.
#' @param primer3path Specify the path to the program primer3 for example: /home/emily/programs/primer3-2.3.7
#' @param outdir Specify the path of the directory in which the output file should be written.
#' @export

create_primer3_input_B <- function(seqID,
                                   target,
                                   primer3path,
                                   outdir){
        primer <- matrix(nrow = 176,
                         ncol = 1)

        params <- c(paste0("SEQUENCE_ID=",seqID),
                    paste0("SEQUENCE_TEMPLATE=",target),
                    paste("TARGET=300", str_length(target) - 300, sep = ","),
                    paste0("PRIMER_THERMODYNAMIC_PARAMETERS_PATH=",primer3path,"/src/primer3_config/", sep = ""),
                    paste("SEQUENCE_PRIMER_PAIR_OK_REGION_LIST=1,100",str_length(target),"100", sep = ","),
                    "PRIMER_MAX_END_STABILITY=9",
                    "P3_FILE_FLAG=1",
                    "PRIMER_OPT_SIZE=20",
                    "PRIMER_MIN_SIZE=18",
                    "PRIMER_MAX_SIZE=23",
                    "PRIMER_PAIR_MAX_LIBRARY_MISPRIMING=20",
                    "PRIMER_MAX_LIBRARY_MISPRIMING=12",
                    "PRIMER_FIRST_BASE_INDEX=1",
                    "PRIMER_THERMODYNAMIC_OLIGO_ALIGNMENT=1",
                    "PRIMER_THERMODYNAMIC_TEMPLATE_ALIGNMENT=0",
                    "PRIMER_PICK_LEFT_PRIMER=1",
                    "PRIMER_PICK_INTERNAL_OLIGO=0",
                    "PRIMER_PICK_RIGHT_PRIMER=1",
                    "PRIMER_LIBERAL_BASE=1",
                    "PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS=0",
                    "PRIMER_LOWERCASE_MASKING=0",
                    "PRIMER_PICK_ANYWAY=1",
                    "PRIMER_EXPLAIN_FLAG=1",
                    "PRIMER_TASK=generic",
                    "PRIMER_MIN_QUALITY=0",
                    "PRIMER_MIN_END_QUALITY=0",
                    "PRIMER_QUALITY_RANGE_MIN=0",
                    "PRIMER_QUALITY_RANGE_MAX=100",
                    "PRIMER_MIN_TM=57.0",
                    "PRIMER_OPT_TM=59.0",
                    "PRIMER_MAX_TM=62.0",
                    "PRIMER_PAIR_MAX_DIFF_TM=5.0",
                    "PRIMER_TM_FORMULA=1",
                    "PRIMER_PRODUCT_MIN_TM=-1000000.0",
                    "PRIMER_PRODUCT_OPT_TM=0.0",
                    "PRIMER_PRODUCT_MAX_TM=1000000.0",
                    "PRIMER_MIN_GC=30.0",
                    "PRIMER_OPT_GC_PERCENT=50.0",
                    "PRIMER_MAX_GC=70.0",
                    "PRIMER_PRODUCT_SIZE_RANGE=50-250 100-300 301-400 401-500 501-600 601-700 701-850 851-1000",
                    "PRIMER_NUM_RETURN=1",
                    "PRIMER_MAX_TEMPLATE_MISPRIMING_TH=40.00",
                    "PRIMER_PAIR_MAX_TEMPLATE_MISPRIMING_TH=70.00",
                    "PRIMER_MAX_SELF_ANY_TH=45.0",
                    "PRIMER_MAX_SELF_END_TH=35.0",
                    "PRIMER_PAIR_MAX_COMPL_ANY_TH=45.0",
                    "PRIMER_PAIR_MAX_COMPL_END_TH=35.0",
                    "PRIMER_MAX_HAIRPIN_TH=24.0",
                    "PRIMER_MAX_TEMPLATE_MISPRIMING=12.00",
                    "PRIMER_PAIR_MAX_TEMPLATE_MISPRIMING=24.00",
                    "PRIMER_MAX_SELF_ANY=8.00",
                    "PRIMER_MAX_SELF_END=3.00",
                    "PRIMER_PAIR_MAX_COMPL_ANY=8.00",
                    "PRIMER_PAIR_MAX_COMPL_END=3.00",
                    "PRIMER_MAX_NS_ACCEPTED=0",
                    "PRIMER_MAX_POLY_X=4",
                    "PRIMER_INSIDE_PENALTY=-1.0",
                    "PRIMER_OUTSIDE_PENALTY=0",
                    "PRIMER_GC_CLAMP=0",
                    "PRIMER_MAX_END_GC=5",
                    "PRIMER_MIN_LEFT_THREE_PRIME_DISTANCE=3",
                    "PRIMER_MIN_RIGHT_THREE_PRIME_DISTANCE=3",
                    "PRIMER_MIN_5_PRIME_OVERLAP_OF_JUNCTION=7",
                    "PRIMER_MIN_3_PRIME_OVERLAP_OF_JUNCTION=4",
                    "PRIMER_SALT_MONOVALENT=50.0",
                    "PRIMER_SALT_CORRECTIONS=1",
                    "PRIMER_SALT_DIVALENT=1.5",
                    "PRIMER_DNTP_CONC=0.6",
                    "PRIMER_DNA_CONC=50.0",
                    "PRIMER_SEQUENCING_SPACING=500",
                    "PRIMER_SEQUENCING_INTERVAL=250",
                    "PRIMER_SEQUENCING_LEAD=50",
                    "PRIMER_SEQUENCING_ACCURACY=20",
                    "PRIMER_WT_SIZE_LT=1.0",
                    "PRIMER_WT_SIZE_GT=1.0",
                    "PRIMER_WT_TM_LT=1.0",
                    "PRIMER_WT_TM_GT=1.0",
                    "PRIMER_WT_GC_PERCENT_LT=0.0",
                    "PRIMER_WT_GC_PERCENT_GT=0.0",
                    "PRIMER_WT_SELF_ANY_TH=0.0",
                    "PRIMER_WT_SELF_END_TH=0.0",
                    "PRIMER_WT_HAIRPIN_TH=0.0",
                    "PRIMER_WT_TEMPLATE_MISPRIMING_TH=0.0",
                    "PRIMER_WT_SELF_ANY=0.0",
                    "PRIMER_WT_SELF_END=0.0",
                    "PRIMER_WT_TEMPLATE_MISPRIMING=0.0",
                    "PRIMER_WT_NUM_NS=0.0",
                    "PRIMER_WT_LIBRARY_MISPRIMING=0.0",
                    "PRIMER_WT_SEQ_QUAL=0.0",
                    "PRIMER_WT_END_QUAL=0.0",
                    "PRIMER_WT_POS_PENALTY=0.0",
                    "PRIMER_WT_END_STABILITY=0.0",
                    "PRIMER_PAIR_WT_PRODUCT_SIZE_LT=0.0",
                    "PRIMER_PAIR_WT_PRODUCT_SIZE_GT=0.0",
                    "PRIMER_PAIR_WT_PRODUCT_TM_LT=0.0",
                    "PRIMER_PAIR_WT_PRODUCT_TM_GT=0.0",
                    "PRIMER_PAIR_WT_COMPL_ANY_TH=0.0",
                    "PRIMER_PAIR_WT_COMPL_END_TH=0.0",
                    "PRIMER_PAIR_WT_TEMPLATE_MISPRIMING_TH=0.0",
                    "PRIMER_PAIR_WT_COMPL_ANY=0.0",
                    "PRIMER_PAIR_WT_COMPL_END=0.0",
                    "PRIMER_PAIR_WT_TEMPLATE_MISPRIMING=0.0",
                    "PRIMER_PAIR_WT_DIFF_TM=0.0",
                    "PRIMER_PAIR_WT_LIBRARY_MISPRIMING=0.0",
                    "PRIMER_PAIR_WT_PR_PENALTY=1.0",
                    "PRIMER_PAIR_WT_IO_PENALTY=0.0",
                    "PRIMER_INTERNAL_MIN_SIZE=18",
                    "PRIMER_INTERNAL_OPT_SIZE=20",
                    "PRIMER_INTERNAL_MAX_SIZE=27",
                    "PRIMER_INTERNAL_MIN_TM=57.0",
                    "PRIMER_INTERNAL_OPT_TM=60.0",
                    "PRIMER_INTERNAL_MAX_TM=63.0",
                    "PRIMER_INTERNAL_MIN_GC=20.0",
                    "PRIMER_INTERNAL_OPT_GC_PERCENT=50.0",
                    "PRIMER_INTERNAL_MAX_GC=80.0",
                    "PRIMER_INTERNAL_MAX_SELF_ANY_TH=47.00",
                    "PRIMER_INTERNAL_MAX_SELF_END_TH=47.00",
                    "PRIMER_INTERNAL_MAX_HAIRPIN_TH=47.00",
                    "PRIMER_INTERNAL_MAX_SELF_ANY=12.00",
                    "PRIMER_INTERNAL_MAX_SELF_END=12.00",
                    "PRIMER_INTERNAL_MIN_QUALITY=0",
                    "PRIMER_INTERNAL_MAX_NS_ACCEPTED=0",
                    "PRIMER_INTERNAL_MAX_POLY_X=5",
                    "PRIMER_INTERNAL_MAX_LIBRARY_MISHYB=12.00",
                    "PRIMER_INTERNAL_SALT_MONOVALENT=50.0",
                    "PRIMER_INTERNAL_DNA_CONC=50.0",
                    "PRIMER_INTERNAL_SALT_DIVALENT=1.5",
                    "PRIMER_INTERNAL_DNTP_CONC=0.0",
                    "PRIMER_INTERNAL_WT_SIZE_LT=1.0",
                    "PRIMER_INTERNAL_WT_SIZE_GT=1.0",
                    "PRIMER_INTERNAL_WT_TM_LT=1.0",
                    "PRIMER_INTERNAL_WT_TM_GT=1.0",
                    "PRIMER_INTERNAL_WT_GC_PERCENT_LT=0.0",
                    "PRIMER_INTERNAL_WT_GC_PERCENT_GT=0.0",
                    "PRIMER_INTERNAL_WT_SELF_ANY_TH=0.0",
                    "PRIMER_INTERNAL_WT_SELF_END_TH=0.0",
                    "PRIMER_INTERNAL_WT_HAIRPIN_TH=0.0",
                    "PRIMER_INTERNAL_WT_SELF_ANY=0.0",
                    "PRIMER_INTERNAL_WT_SELF_END=0.0",
                    "PRIMER_INTERNAL_WT_NUM_NS=0.0",
                    "PRIMER_INTERNAL_WT_LIBRARY_MISHYB=0.0",
                    "PRIMER_INTERNAL_WT_SEQ_QUAL=0.0",
                    "PRIMER_INTERNAL_WT_END_QUAL=0.0",
                    "PRIMER_LEFT_EXPLAIN=considered 50440, GC content failed 99, low tm 21, high tm 228, long poly-x seq 5, not in any ok left region 49965, ok 122",
                    "PRIMER_RIGHT_EXPLAIN=considered 50448, GC content failed 59, low tm 38, high tm 260, not in any ok right region 49965, ok 126",
                    "PRIMER_PAIR_EXPLAIN=considered 1, ok 1",
                    "PRIMER_LEFT_NUM_RETURNED=1",
                    "PRIMER_RIGHT_NUM_RETURNED=1",
                    "PRIMER_INTERNAL_NUM_RETURNED=0",
                    "PRIMER_PAIR_NUM_RETURNED=1",
                    "PRIMER_PAIR_0_PENALTY=0.309338",
                    "PRIMER_LEFT_0_PENALTY=0.216990",
                    "PRIMER_RIGHT_0_PENALTY=0.092348",
                    "PRIMER_LEFT_0_SEQUENCE=GGGATTGGTCAGGGTCATCT",
                    "PRIMER_RIGHT_0_SEQUENCE=GGGCGGAAGGTCAATTGTAC",
                    "PRIMER_LEFT_0=1515,20",
                    "PRIMER_RIGHT_0=1712,20",
                    "PRIMER_LEFT_0_TM=58.783",
                    "PRIMER_RIGHT_0_TM=58.908",
                    "PRIMER_LEFT_0_GC_PERCENT=55.000",
                    "PRIMER_RIGHT_0_GC_PERCENT=55.000",
                    "PRIMER_LEFT_0_SELF_ANY_TH=0.00",
                    "PRIMER_RIGHT_0_SELF_ANY_TH=5.13",
                    "PRIMER_LEFT_0_SELF_END_TH=0.00",
                    "PRIMER_RIGHT_0_SELF_END_TH=2.63",
                    "PRIMER_LEFT_0_HAIRPIN_TH=0.00",
                    "PRIMER_RIGHT_0_HAIRPIN_TH=0.00",
                    "PRIMER_LEFT_0_END_STABILITY=2.9000",
                    "PRIMER_RIGHT_0_END_STABILITY=2.9000",
                    "PRIMER_LEFT_0_TEMPLATE_MISPRIMING=10.0000",
                    "PRIMER_RIGHT_0_TEMPLATE_MISPRIMING=9.0000",
                    "PRIMER_PAIR_0_COMPL_ANY_TH=0.00",
                    "PRIMER_PAIR_0_COMPL_END_TH=0.00",
                    "PRIMER_PAIR_0_PRODUCT_SIZE=198",
                    "PRIMER_PAIR_0_TEMPLATE_MISPRIMING=18.00",
                    "=")

        primer[,1] <- params
        write.table(primer[,1], paste0(outdir,"primer3in_B"), col.names = F, row.names = F, quote = F)

}

#' create_primer3_input_C: Create the input file for running primer3 using the primer3 v.0.4.0 web parameters
#' @param seqID Specify a name for your sequence.
#' @param target Specify your target sequence object.
#' @param primer3path Specify the path to the program primer3 for example: /home/emily/programs/primer3-2.3.7
#' @param outdir Specify the path of the directory in which the output file should be written.
#' @export

create_primer3_input_C <- function(seqID,
                                   target,
                                   primer3path,
                                   outdir){
        primer <- matrix(nrow = 119,
                         ncol = 1)

        params <- c(paste0("SEQUENCE_ID=",seqID),
                    paste0("SEQUENCE_TEMPLATE=",target),
                    paste("TARGET=300", str_length(target) - 300, sep = ","),
                    "PRIMER_THERMODYNAMIC_OLIGO_ALIGNMENT=0",
                    "PRIMER_THERMODYNAMIC_TEMPLATE_ALIGNMENT=0",
                    "PRIMER_TASK=pick_detection_primers",
                    "PRIMER_PICK_LEFT_PRIMER=1",
                    "PRIMER_PICK_INTERNAL_OLIGO=0",
                    "PRIMER_PICK_RIGHT_PRIMER=1",
                    "PRIMER_NUM_RETURN=5",
                    "PRIMER_MIN_5_PRIME_OVERLAP_OF_JUNCTION=5",
                    "PRIMER_PRODUCT_SIZE_RANGE=150-250 100-300 301-400 401-500 501-600 601-700 701-850 851-1000",
                    "P3_FILE_FLAG=1",
                    "PRIMER_PRODUCT_OPT_SIZE=0",
                    "PRIMER_PAIR_WT_PRODUCT_SIZE_LT=0.0",
                    "PRIMER_PAIR_WT_PRODUCT_SIZE_GT=0.0",
                    "PRIMER_MIN_SIZE=18",
                    "PRIMER_INTERNAL_MIN_SIZE=18",
                    "PRIMER_OPT_SIZE=20",
                    "PRIMER_INTERNAL_OPT_SIZE=20",
                    "PRIMER_MAX_SIZE=27",
                    "PRIMER_INTERNAL_MAX_SIZE=27",
                    "PRIMER_WT_SIZE_LT=1.0",
                    "PRIMER_INTERNAL_WT_SIZE_LT=1.0",
                    "PRIMER_WT_SIZE_GT=1.0",
                    "PRIMER_INTERNAL_WT_SIZE_GT=1.0",
                    "PRIMER_MIN_GC=20.0",
                    "PRIMER_INTERNAL_MIN_GC=20.0",
                    "PRIMER_MAX_GC=80.0",
                    "PRIMER_INTERNAL_MAX_GC=80.0",
                    "PRIMER_WT_GC_PERCENT_LT=0.0",
                    "PRIMER_INTERNAL_WT_GC_PERCENT_LT=0.0",
                    "PRIMER_WT_GC_PERCENT_GT=0.0",
                    "PRIMER_INTERNAL_WT_GC_PERCENT_GT=0.0",
                    "PRIMER_GC_CLAMP=0",
                    "PRIMER_MAX_END_GC=5",
                    "PRIMER_MIN_TM=57.0",
                    "PRIMER_INTERNAL_MIN_TM=57.0",
                    "PRIMER_OPT_TM=60.0",
                    "PRIMER_INTERNAL_OPT_TM=60.0",
                    "PRIMER_MAX_TM=63.0",
                    "PRIMER_INTERNAL_MAX_TM=63.0",
                    "PRIMER_PAIR_MAX_DIFF_TM=100.0",
                    "PRIMER_WT_TM_LT=1.0",
                    "PRIMER_INTERNAL_WT_TM_LT=1.0",
                    "PRIMER_WT_TM_GT=1.0",
                    "PRIMER_INTERNAL_WT_TM_GT=1.0",
                    "PRIMER_PAIR_WT_DIFF_TM=0.0",
                    "PRIMER_PRODUCT_MIN_TM=-1000000.0",
                    "PRIMER_PRODUCT_OPT_TM=0.0",
                    "PRIMER_PRODUCT_MAX_TM=1000000.0",
                    "PRIMER_PAIR_WT_PRODUCT_TM_LT=0.0",
                    "PRIMER_PAIR_WT_PRODUCT_TM_GT=0.0",
                    "PRIMER_TM_FORMULA=0",
                    "PRIMER_SALT_MONOVALENT=50.0",
                    "PRIMER_INTERNAL_SALT_MONOVALENT=50.0",
                    "PRIMER_SALT_DIVALENT=0.0",
                    "PRIMER_INTERNAL_SALT_DIVALENT=0.0",
                    "PRIMER_DNTP_CONC=0.0",
                    "PRIMER_INTERNAL_DNTP_CONC=0.0",
                    "PRIMER_SALT_CORRECTIONS=0",
                    "PRIMER_DNA_CONC=50.0",
                    "PRIMER_INTERNAL_DNA_CONC=50.0",
                    "PRIMER_MAX_SELF_ANY=8.00",
                    "PRIMER_INTERNAL_MAX_SELF_ANY=12.00",
                    "PRIMER_PAIR_MAX_COMPL_ANY=8.00",
                    "PRIMER_WT_SELF_ANY=0.0",
                    "PRIMER_INTERNAL_WT_SELF_ANY=0.0",
                    "PRIMER_PAIR_WT_COMPL_ANY=0.0",
                    "PRIMER_MAX_SELF_END=3.00",
                    "PRIMER_INTERNAL_MAX_SELF_END=12.00",
                    "PRIMER_PAIR_MAX_COMPL_END=3.00",
                    "PRIMER_WT_SELF_END=0.0",
                    "PRIMER_INTERNAL_WT_SELF_END=0.0",
                    "PRIMER_PAIR_WT_COMPL_END=0.0",
                    "PRIMER_MAX_END_STABILITY=9.0",
                    "PRIMER_WT_END_STABILITY=0.0",
                    "PRIMER_MAX_NS_ACCEPTED=0",
                    "PRIMER_INTERNAL_MAX_NS_ACCEPTED=0",
                    "PRIMER_WT_NUM_NS=0.0",
                    "PRIMER_INTERNAL_WT_NUM_NS=0.0",
                    "PRIMER_MAX_POLY_X=5",
                    "PRIMER_INTERNAL_MAX_POLY_X=5",
                    "PRIMER_MIN_THREE_PRIME_DISTANCE=-1",
                    "PRIMER_PICK_ANYWAY=1",
                    "PRIMER_LOWERCASE_MASKING=0",
                    "PRIMER_EXPLAIN_FLAG=1",
                    "PRIMER_LIBERAL_BASE=1",
                    "PRIMER_FIRST_BASE_INDEX=1",
                    "PRIMER_MAX_TEMPLATE_MISPRIMING=12.00",
                    "PRIMER_PAIR_MAX_TEMPLATE_MISPRIMING=24.00",
                    "PRIMER_WT_TEMPLATE_MISPRIMING=0.0",
                    "PRIMER_PAIR_WT_TEMPLATE_MISPRIMING=0.0",
                    "PRIMER_LIB_AMBIGUITY_CODES_CONSENSUS=0",
                    "PRIMER_MAX_LIBRARY_MISPRIMING=12.00",
                    "PRIMER_INTERNAL_MAX_LIBRARY_MISHYB=12.00",
                    "PRIMER_PAIR_MAX_LIBRARY_MISPRIMING=24.00",
                    "PRIMER_WT_LIBRARY_MISPRIMING=0.0",
                    "PRIMER_INTERNAL_WT_LIBRARY_MISHYB=0.0",
                    "PRIMER_PAIR_WT_LIBRARY_MISPRIMING=0.0",
                    "PRIMER_MIN_QUALITY=0",
                    "PRIMER_INTERNAL_MIN_QUALITY=0",
                    "PRIMER_MIN_END_QUALITY=0",
                    "PRIMER_QUALITY_RANGE_MIN=0",
                    "PRIMER_QUALITY_RANGE_MAX=100",
                    "PRIMER_WT_SEQ_QUAL=0.0",
                    "PRIMER_INTERNAL_WT_SEQ_QUAL=0.0",
                    "PRIMER_PAIR_WT_PR_PENALTY=1.0",
                    "PRIMER_PAIR_WT_IO_PENALTY=0.0",
                    "PRIMER_INSIDE_PENALTY=-1.0",
                    "PRIMER_OUTSIDE_PENALTY=0.0",
                    "PRIMER_WT_POS_PENALTY=0.0",
                    "PRIMER_SEQUENCING_LEAD=50",
                    "PRIMER_SEQUENCING_SPACING=500",
                    "PRIMER_SEQUENCING_INTERVAL=250",
                    "PRIMER_SEQUENCING_ACCURACY=20",
                    "PRIMER_WT_END_QUAL=0.0",
                    "PRIMER_INTERNAL_WT_END_QUAL=0.0",
                    "=")

        primer[,1] <- params
        write.table(primer[,1], paste0(outdir,"primer3in_C"), col.names = F, row.names = F, quote = F)

}
elhumble/primerdesignR documentation built on May 16, 2019, 2:59 a.m.