class Qu::Pcr::Amplicon

Attributes

fp[R]
probe[R]
product[R]
rp[R]

Public Class Methods

new(record, i, type='primer3') click to toggle source
# File lib/qu/pcr/primer3.rb, line 37
def initialize(record, i, type='primer3')
  if type == 'primer3'
    (fp_5_pos, fp_size) = record["PRIMER_LEFT_%s" %[i]].split(',')
    (rp_5_pos, rp_size) = record["PRIMER_RIGHT_%s" %[i]].split(',')
    fp_seq = record["PRIMER_LEFT_%s_SEQUENCE" % [i]]
    rp_seq = record["PRIMER_RIGHT_%s_SEQUENCE" % [i]]
    fp_gc = record["PRIMER_LEFT_%s_GC_PERCENT" % [i]].to_f
    rp_gc = record["PRIMER_RIGHT_%s_GC_PERCENT" % [i]].to_f
    fp_tm = record["PRIMER_LEFT_%s_TM" % [i]].to_f
    rp_tm = record["PRIMER_RIGHT_%s_TM" % [i]].to_f
    product_opt_a = record["PRIMER_PAIR_%s_T_OPT_A" % [i]].to_f
    product_size = record["PRIMER_PAIR_%s_PRODUCT_SIZE" % [i]].to_i
    product_tm = record["PRIMER_PAIR_%s_PRODUCT_TM" % [i]].to_f
    penalty = record["PRIMER_PAIR_%s_PENALTY" % [i]].to_f
    fp_penalty = record["PRIMER_LEFT_%s_PENALTY" % [i]].to_f
    rp_penalty = record["PRIMER_RIGHT_%s_PENALTY" % [i]].to_f   
    id = record["SEQUENCE_ID"].to_s
    product_seq = record["SEQUENCE_TEMPLATE"].to_s[fp_5_pos.to_i..rp_5_pos.to_i]

    if record.has_key?("PRIMER_INTERNAL_NUM_RETURNED") && record["PRIMER_INTERNAL_NUM_RETURNED"].to_i > 0
      (probe_5_pos, probe_size) = record["PRIMER_INTERNAL_%s" %[i]].split(',')
      probe_seq = record["PRIMER_INTERNAL_%s_SEQUENCE" % [i]]
      probe_gc = record["PRIMER_INTERNAL_%s_GC_PERCENT" % [i]].to_f
      probe_tm = record["PRIMER_INTERNAL_%s_TM" % [i]].to_f
      probe_penalty = record["PRIMER_INTERNAL_%s_PENALTY" % [i]].to_f   

      @probe = Primer.new(seq = probe_seq,
                     type = 'probe',
                     gc = probe_gc,
                     tm = probe_tm,
                     penalty = probe_penalty,
                     pos = probe_5_pos,
                    )
    else
      @probe = nil
    end

    @fp = Primer.new(seq = fp_seq,
                     type = 'forward',
                     gc = fp_gc,
                     tm = fp_tm,
                     penalty = fp_penalty,
                     pos = fp_5_pos,
                    )

    @rp = Primer.new(seq = rp_seq,
                     type = 'reverse',
                     gc = rp_gc,
                     tm = rp_tm,
                     penalty = rp_penalty,
                     pos = rp_5_pos,
                    )

    @product = Product.new(seq = product_seq,
                           tm = product_tm,
                           opt_a = product_opt_a,
                           size = product_size,
                           id = id,
                           penalty = penalty,
                          )
  end
end