Class: Ms::Sequest::Srf::Out::Pep

Inherits:
Object
  • Object
show all
Defined in:
lib/ms/sequest/srf.rb

Overview

0=mh 1=deltacn_orig 2=sp 3=xcorr 4=id 5=num_other_loci 6=rsp 7=ions_matched 8=ions_total 9=sequence 10=prots 11=deltamass 12=ppm 13=aaseq 14=base_name 15=first_scan 16=last_scan 17=charge 18=srf 19=deltacn 20=deltacn_orig_updated

Constant Summary collapse

Unpack_35 =
'@64Ex8ex8eeeIx18Ivx2vvx8Z*@246Z*'
Unpack_32 =

translation: @64=(64 bytes in to the record), E=mH, x8=8unknown bytes, e=deltacn, x8=8unknown bytes, e=sf, e=sp, e=xcorr, I=ID#, x18=18 unknown bytes, v=rsp, v=ions_matched, v=ions_total, x8=8unknown bytes, Z*=sequence, 240Z*=at byte 240 grab the string (which is proteins). Unpack_32 = ‘@64Ex8ex12eeIx18vvvx8Z*@240Z*’

'@64Ex8ex8eeeIx14Ivvvx8Z*@240Z*'
Unpack_four_null_bytes =
'a*'
Unpack_Zstar =
'Z*'
Read_35 =
426
Read_32 =
320
FourNullBytes_as_string =
"\0\0\0\0"
NewRecordStart =

NewRecordStart = “00” + 0x3a.chr + 0x1a.chr + “00”

0x01.chr + 0x00.chr
Sequest_record_start =
"[SEQUEST]"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.read_extra_references(fh, num_extra_references, pep_hits) ⇒ Object



629
630
631
632
633
634
635
636
637
638
# File 'lib/ms/sequest/srf.rb', line 629

def self.read_extra_references(fh, num_extra_references, pep_hits)
  num_extra_references.times do
    # 80 bytes total (with index number)
    pep = pep_hits[fh.read(8).unpack('x4I').first - 1]

    ref = fh.read(80).unpack('A*').first
    pep[11] << Ms::Sequest::Srf::Out::Prot.new(ref[0,38])
  end
  #  fh.read(6) if unpack_35
end

.set_deltacn_from_deltacn_orig(ar) ⇒ Object

creates the deltacn that is meaningful for the top hit (the deltacn_orig or the second best hit and so on). assumes sorted



607
608
609
610
# File 'lib/ms/sequest/srf.rb', line 607

def self.set_deltacn_from_deltacn_orig(ar)
  (1...ar.size).each {|i| ar[i-1].deltacn = ar[i].deltacn_orig }
  ar[-1].deltacn = 1.1
end

.update_deltacns_from_xcorr(ar) ⇒ Object

(assumes sorted) recalculates deltacn from xcorrs and sets deltacn_orig_updated and deltacn



614
615
616
617
618
619
620
621
622
623
624
625
626
627
# File 'lib/ms/sequest/srf.rb', line 614

def self.update_deltacns_from_xcorr(ar)
  if ar.size > 0
    top_score = ar.first[4]
    other_scores = (1...(ar.size)).to_a.map do |i|
      1.0 - (ar[i][4]/top_score)
    end
    ar.first[21] = 0.0
    (0...(ar.size-1)).each do |i|
      ar[i][20] = other_scores[i]    # deltacn
      ar[i+1][21] = other_scores[i]  # deltacn_orig_updated
    end
    ar.last[20] = 1.1
  end
end

Instance Method Details

#from_io(fh, unpack_35) ⇒ Object

extra_references_array is an array that grows with peptides as extra references are discovered.



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
# File 'lib/ms/sequest/srf.rb', line 678

def from_io(fh, unpack_35)
  unpack = 
    if unpack_35 ; Unpack_35
    else ; Unpack_32
    end

  ## get the first part of the info
  st = fh.read(( unpack_35 ? Read_35 : Read_32) ) ## read all the hit data

  self[0,11] = st.unpack(unpack)


  # set deltacn_orig_updated 
  self[21] = self[1]

  # we are slicing the reference to 38 chars to be the same length as
  # duplicate references
  self[11] = [Ms::Sequest::Srf::Out::Prot.new(self[11][0,38])]

  self[14] = Ms::Id::Peptide.sequence_to_aaseq(self[10])

  fh.read(6) if unpack_35

  self
end

#inspectObject



658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
# File 'lib/ms/sequest/srf.rb', line 658

def inspect
  st = %w(aaseq sequence mh deltacn_orig sf sp xcorr id rsp ions_matched ions_total prots deltamass ppm base_name first_scan last_scan charge deltacn).map do |v| 
    if v == 'prots'
      "#{v}(#)=#{send(v.to_sym).size}"
    elsif v.is_a? Array
      "##{v}=#{send(v.to_sym).size}"
    else
      "#{v}=#{send(v.to_sym).inspect}"
    end
  end
  st.unshift("<#{self.class}")
  if srf
    st.push("srf(base_name)=#{srf.base_name.inspect}")
  end
  st.push('>')
  st.join(' ')
  #"<Ms::Sequest::Srf::Out::Pep @mh=#{mh}, @deltacn=#{deltacn}, @sp=#{sp}, @xcorr=#{xcorr}, @id=#{id}, @rsp=#{rsp}, @ions_matched=#{ions_matched}, @ions_total=#{ions_total}, @sequence=#{sequence}, @prots(count)=#{prots.size}, @deltamass=#{deltamass}, @ppm=#{ppm} @aaseq=#{aaseq}, @base_name=#{base_name}, @first_scan=#{first_scan}, @last_scan=#{last_scan}, @charge=#{charge}, @srf(base_name)=#{srf.base_name}>"
end