ms-error_rate 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
@@ -4,7 +4,7 @@ require 'trollop'
4
4
  require 'nokogiri'
5
5
  require 'set'
6
6
 
7
- require 'ms/error_rate/qvalue'
7
+ require 'ms/error_rate/qvalue/pepxml'
8
8
 
9
9
  opts = Trollop::Parser.new do
10
10
  banner %Q{usage: #{File.basename(__FILE__)} <fwd>.xml <decoy>.xml ...
@@ -12,50 +12,26 @@ outputs: <fwd>.phq.csv
12
12
  phq.tsv?: see schema/peptide_hit_qvalues.phq.tsv
13
13
  }
14
14
  opt :z_together, "do not group by charge state", :default => false
15
+ opt :verbose, "be verbose", :default => false
15
16
  end
16
17
 
17
- DELIMITER = "\t"
18
-
19
18
  opt = opts.parse(ARGV)
20
19
  if ARGV.size == 0 || (ARGV.size%2 != 0)
21
20
  puts "\n\n!! only even numbers of files accepted (target decoy target decoy ...) !!\n\n" if (ARGV.size%2 != 0)
22
21
  opts.educate
23
22
  exit
24
23
  end
24
+ $VERBOSE = opt.delete(:verbose)
25
25
 
26
26
  files = ARGV.to_a
27
-
28
- PeptideHit = Struct.new(:aaseq, :charge, :ionscore, :qvalue)
29
-
30
- # this is a list of high quality peptide hits associated with each group
31
- peptide_hits_per_file = files.map do |file|
32
- File.open(file) do |io|
33
- doc = Nokogiri::XML.parse(io, nil, nil, Nokogiri::XML::ParseOptions::DEFAULT_XML | Nokogiri::XML::ParseOptions::NOBLANKS)
34
- # we can work with namespaces, or just remove them ...
35
- doc.remove_namespaces!
36
- root = doc.root
37
- search_hits = root.xpath('//search_hit')
38
- search_hits.map do |search_hit|
39
- aaseq = search_hit['peptide']
40
- ionscore = search_hit.children.find {|node| node.name == 'search_score' && node['name'] == 'ionscore' }['value'].to_f
41
- charge = search_hit.parent.parent['assumed_charge'].to_i
42
- PeptideHit.new(aaseq, charge, ionscore)
43
- end
27
+ files.each_slice(2).map do |target, decoy|
28
+ hit_qvalue_pairs = Ms::ErrorRate::Qvalue::Pepxml.target_decoy_qvalues(target, decoy, opt, &:ionscore)
29
+ hits = [] ; qvals = []
30
+ hit_qvalue_pairs.each do |hit, qval|
31
+ hits << hit ; qvals << qval
44
32
  end
33
+ outfile = Ms::Ident::PeptideHit::Qvalue.to_phq(target.chomp(File.ext(target)), hits, qvals)
34
+ puts "created: #{outfile}" if $VERBOSE
45
35
  end
46
36
 
47
- hits_per_target = peptide_hits_per_file.each_slice(2).map do |target_hits, decoy_hits|
48
- pairs = Ms::ErrorRate::Qvalue.target_decoy_qvalues(target_hits, decoy_hits, :z_together => opt[:z_together], &:ionscore)
49
- target_peptide_hits = pairs.map {|peptide_hit, qvalue| peptide_hit.qvalue = qvalue ; peptide_hit }
50
- end
51
-
52
- files.each_slice(2).map(&:first).zip(hits_per_target) do |file, hits|
53
- newfile = file.chomp(File.extname(file)) + ".phq.tsv"
54
- File.open(newfile,'w') do |out|
55
- out.puts %w(aaseq charge qvalue).join(DELIMITER)
56
- hits.each do |hit|
57
- out.puts hit.values_at(0,1,3).join(DELIMITER)
58
- end
59
- end
60
- end
61
37
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 7
9
- version: 0.0.7
8
+ - 8
9
+ version: 0.0.8
10
10
  platform: ruby
11
11
  authors:
12
12
  - John T. Prince
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-03-28 00:00:00 -06:00
17
+ date: 2011-03-30 00:00:00 -06:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency