mspire 0.4.9 → 0.5.0
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/README +27 -17
- data/changelog.txt +31 -62
- data/lib/ms/calc.rb +32 -0
- data/lib/ms/data/interleaved.rb +60 -0
- data/lib/ms/data/lazy_io.rb +73 -0
- data/lib/ms/data/lazy_string.rb +15 -0
- data/lib/ms/data/simple.rb +59 -0
- data/lib/ms/data/transposed.rb +41 -0
- data/lib/ms/data.rb +57 -0
- data/lib/ms/format/format_error.rb +12 -0
- data/lib/ms/spectrum.rb +25 -384
- data/lib/ms/support/binary_search.rb +126 -0
- data/lib/ms.rb +10 -10
- metadata +38 -350
- data/INSTALL +0 -58
- data/README.rdoc +0 -18
- data/Rakefile +0 -330
- data/bin/aafreqs.rb +0 -23
- data/bin/bioworks2excel.rb +0 -14
- data/bin/bioworks_to_pepxml.rb +0 -148
- data/bin/bioworks_to_pepxml_gui.rb +0 -225
- data/bin/fasta_shaker.rb +0 -5
- data/bin/filter_and_validate.rb +0 -5
- data/bin/gi2annot.rb +0 -14
- data/bin/id_class_anal.rb +0 -112
- data/bin/id_precision.rb +0 -172
- data/bin/ms_to_lmat.rb +0 -67
- data/bin/pepproph_filter.rb +0 -16
- data/bin/prob_validate.rb +0 -6
- data/bin/protein_summary.rb +0 -6
- data/bin/protxml2prots_peps.rb +0 -32
- data/bin/raw_to_mzXML.rb +0 -55
- data/bin/run_percolator.rb +0 -122
- data/bin/sqt_group.rb +0 -26
- data/bin/srf_group.rb +0 -27
- data/bin/srf_to_sqt.rb +0 -40
- data/lib/align/chams.rb +0 -78
- data/lib/align.rb +0 -154
- data/lib/archive/targz.rb +0 -94
- data/lib/bsearch.rb +0 -120
- data/lib/core_extensions.rb +0 -16
- data/lib/fasta.rb +0 -626
- data/lib/gi.rb +0 -124
- data/lib/group_by.rb +0 -10
- data/lib/index_by.rb +0 -11
- data/lib/merge_deep.rb +0 -21
- data/lib/ms/converter/mzxml.rb +0 -77
- data/lib/ms/gradient_program.rb +0 -170
- data/lib/ms/msrun.rb +0 -244
- data/lib/ms/msrun_index.rb +0 -108
- data/lib/ms/parser/mzdata/axml.rb +0 -67
- data/lib/ms/parser/mzdata/dom.rb +0 -175
- data/lib/ms/parser/mzdata/libxml.rb +0 -7
- data/lib/ms/parser/mzdata.rb +0 -31
- data/lib/ms/parser/mzxml/axml.rb +0 -70
- data/lib/ms/parser/mzxml/dom.rb +0 -182
- data/lib/ms/parser/mzxml/hpricot.rb +0 -253
- data/lib/ms/parser/mzxml/libxml.rb +0 -19
- data/lib/ms/parser/mzxml/regexp.rb +0 -122
- data/lib/ms/parser/mzxml/rexml.rb +0 -72
- data/lib/ms/parser/mzxml/xmlparser.rb +0 -248
- data/lib/ms/parser/mzxml.rb +0 -282
- data/lib/ms/parser.rb +0 -108
- data/lib/ms/precursor.rb +0 -25
- data/lib/ms/scan.rb +0 -81
- data/lib/mspire.rb +0 -4
- data/lib/pi_zero.rb +0 -244
- data/lib/qvalue.rb +0 -161
- data/lib/roc.rb +0 -187
- data/lib/sample_enzyme.rb +0 -160
- data/lib/scan_i.rb +0 -21
- data/lib/spec_id/aa_freqs.rb +0 -170
- data/lib/spec_id/bioworks.rb +0 -497
- data/lib/spec_id/digestor.rb +0 -138
- data/lib/spec_id/mass.rb +0 -179
- data/lib/spec_id/parser/proph.rb +0 -335
- data/lib/spec_id/precision/filter/cmdline.rb +0 -218
- data/lib/spec_id/precision/filter/interactive.rb +0 -134
- data/lib/spec_id/precision/filter/output.rb +0 -148
- data/lib/spec_id/precision/filter.rb +0 -637
- data/lib/spec_id/precision/output.rb +0 -60
- data/lib/spec_id/precision/prob/cmdline.rb +0 -160
- data/lib/spec_id/precision/prob/output.rb +0 -94
- data/lib/spec_id/precision/prob.rb +0 -249
- data/lib/spec_id/proph/pep_summary.rb +0 -104
- data/lib/spec_id/proph/prot_summary.rb +0 -484
- data/lib/spec_id/proph.rb +0 -4
- data/lib/spec_id/protein_summary.rb +0 -489
- data/lib/spec_id/sequest/params.rb +0 -316
- data/lib/spec_id/sequest/pepxml.rb +0 -1458
- data/lib/spec_id/sequest.rb +0 -33
- data/lib/spec_id/sqt.rb +0 -349
- data/lib/spec_id/srf.rb +0 -973
- data/lib/spec_id.rb +0 -778
- data/lib/spec_id_xml.rb +0 -99
- data/lib/transmem/phobius.rb +0 -147
- data/lib/transmem/toppred.rb +0 -368
- data/lib/transmem.rb +0 -157
- data/lib/validator/aa.rb +0 -48
- data/lib/validator/aa_est.rb +0 -112
- data/lib/validator/background.rb +0 -77
- data/lib/validator/bias.rb +0 -95
- data/lib/validator/cmdline.rb +0 -431
- data/lib/validator/decoy.rb +0 -107
- data/lib/validator/digestion_based.rb +0 -70
- data/lib/validator/probability.rb +0 -51
- data/lib/validator/prot_from_pep.rb +0 -234
- data/lib/validator/q_value.rb +0 -32
- data/lib/validator/transmem.rb +0 -272
- data/lib/validator/true_pos.rb +0 -46
- data/lib/validator.rb +0 -197
- data/lib/xml.rb +0 -38
- data/lib/xml_style_parser.rb +0 -119
- data/lib/xmlparser_wrapper.rb +0 -19
- data/release_notes.txt +0 -2
- data/script/compile_and_plot_smriti_final.rb +0 -97
- data/script/create_little_pepxml.rb +0 -61
- data/script/degenerate_peptides.rb +0 -47
- data/script/estimate_fpr_by_cysteine.rb +0 -226
- data/script/extract_gradient_programs.rb +0 -56
- data/script/find_cysteine_background.rb +0 -137
- data/script/genuine_tps_and_probs.rb +0 -136
- data/script/get_apex_values_rexml.rb +0 -44
- data/script/histogram_probs.rb +0 -61
- data/script/mascot_fix_pepxml.rb +0 -123
- data/script/msvis.rb +0 -42
- data/script/mzXML2timeIndex.rb +0 -25
- data/script/peps_per_bin.rb +0 -67
- data/script/prep_dir.rb +0 -121
- data/script/simple_protein_digestion.rb +0 -27
- data/script/smriti_final_analysis.rb +0 -103
- data/script/sqt_to_meta.rb +0 -24
- data/script/top_hit_per_scan.rb +0 -67
- data/script/toppred_to_yaml.rb +0 -47
- data/script/tpp_installer.rb +0 -249
- data/specs/align_spec.rb +0 -79
- data/specs/bin/bioworks_to_pepxml_spec.rb +0 -79
- data/specs/bin/fasta_shaker_spec.rb +0 -259
- data/specs/bin/filter_and_validate__multiple_vals_helper.yaml +0 -199
- data/specs/bin/filter_and_validate_spec.rb +0 -180
- data/specs/bin/ms_to_lmat_spec.rb +0 -34
- data/specs/bin/prob_validate_spec.rb +0 -86
- data/specs/bin/protein_summary_spec.rb +0 -14
- data/specs/fasta_spec.rb +0 -354
- data/specs/gi_spec.rb +0 -22
- data/specs/load_bin_path.rb +0 -7
- data/specs/merge_deep_spec.rb +0 -13
- data/specs/ms/gradient_program_spec.rb +0 -77
- data/specs/ms/msrun_spec.rb +0 -498
- data/specs/ms/parser_spec.rb +0 -92
- data/specs/ms/spectrum_spec.rb +0 -87
- data/specs/pi_zero_spec.rb +0 -115
- data/specs/qvalue_spec.rb +0 -39
- data/specs/roc_spec.rb +0 -251
- data/specs/rspec_autotest.rb +0 -149
- data/specs/sample_enzyme_spec.rb +0 -126
- data/specs/spec_helper.rb +0 -135
- data/specs/spec_id/aa_freqs_spec.rb +0 -52
- data/specs/spec_id/bioworks_spec.rb +0 -148
- data/specs/spec_id/digestor_spec.rb +0 -75
- data/specs/spec_id/precision/filter/cmdline_spec.rb +0 -20
- data/specs/spec_id/precision/filter/output_spec.rb +0 -31
- data/specs/spec_id/precision/filter_spec.rb +0 -246
- data/specs/spec_id/precision/prob_spec.rb +0 -44
- data/specs/spec_id/precision/prob_spec_helper.rb +0 -0
- data/specs/spec_id/proph/pep_summary_spec.rb +0 -98
- data/specs/spec_id/proph/prot_summary_spec.rb +0 -128
- data/specs/spec_id/protein_summary_spec.rb +0 -189
- data/specs/spec_id/sequest/params_spec.rb +0 -68
- data/specs/spec_id/sequest/pepxml_spec.rb +0 -374
- data/specs/spec_id/sequest_spec.rb +0 -38
- data/specs/spec_id/sqt_spec.rb +0 -246
- data/specs/spec_id/srf_spec.rb +0 -172
- data/specs/spec_id/srf_spec_helper.rb +0 -139
- data/specs/spec_id_helper.rb +0 -33
- data/specs/spec_id_spec.rb +0 -366
- data/specs/spec_id_xml_spec.rb +0 -33
- data/specs/transmem/phobius_spec.rb +0 -425
- data/specs/transmem/toppred_spec.rb +0 -298
- data/specs/transmem_spec.rb +0 -60
- data/specs/transmem_spec_shared.rb +0 -64
- data/specs/validator/aa_est_spec.rb +0 -66
- data/specs/validator/aa_spec.rb +0 -40
- data/specs/validator/background_spec.rb +0 -67
- data/specs/validator/bias_spec.rb +0 -122
- data/specs/validator/decoy_spec.rb +0 -51
- data/specs/validator/fasta_helper.rb +0 -26
- data/specs/validator/prot_from_pep_spec.rb +0 -141
- data/specs/validator/transmem_spec.rb +0 -146
- data/specs/validator/true_pos_spec.rb +0 -58
- data/specs/validator_helper.rb +0 -33
- data/specs/xml_spec.rb +0 -12
- data/test_files/000_pepxml18_small.xml +0 -206
- data/test_files/020a.mzXML.timeIndex +0 -4710
- data/test_files/4-03-03_mzXML/000.mzXML.timeIndex +0 -3973
- data/test_files/4-03-03_mzXML/020.mzXML.timeIndex +0 -3872
- data/test_files/4-03-03_small-prot.xml +0 -321
- data/test_files/4-03-03_small.xml +0 -3876
- data/test_files/7MIX_STD_110802_1.sequest_params_fragment.srf +0 -0
- data/test_files/bioworks-3.3_10prots.xml +0 -5999
- data/test_files/bioworks31.params +0 -77
- data/test_files/bioworks32.params +0 -62
- data/test_files/bioworks33.params +0 -63
- data/test_files/bioworks_single_run_small.xml +0 -7237
- data/test_files/bioworks_small.fasta +0 -212
- data/test_files/bioworks_small.params +0 -63
- data/test_files/bioworks_small.phobius +0 -109
- data/test_files/bioworks_small.toppred.out +0 -2847
- data/test_files/bioworks_small.xml +0 -5610
- data/test_files/bioworks_with_INV_small.xml +0 -3753
- data/test_files/bioworks_with_SHUFF_small.xml +0 -2503
- data/test_files/corrupted_900.srf +0 -0
- data/test_files/head_of_7MIX.srf +0 -0
- data/test_files/interact-opd1_mods_small-prot.xml +0 -304
- data/test_files/messups.fasta +0 -297
- data/test_files/opd1/000.my_answer.100lines.xml +0 -101
- data/test_files/opd1/000.tpp_1.2.3.first10.xml +0 -115
- data/test_files/opd1/000.tpp_2.9.2.first10.xml +0 -126
- data/test_files/opd1/000.v2.1.mzXML.timeIndex +0 -3748
- data/test_files/opd1/000_020-prot.png +0 -0
- data/test_files/opd1/000_020_3prots-prot.mod_initprob.xml +0 -62
- data/test_files/opd1/000_020_3prots-prot.xml +0 -62
- data/test_files/opd1/opd1_cat_inv_small-prot.xml +0 -139
- data/test_files/opd1/sequest.3.1.params +0 -77
- data/test_files/opd1/sequest.3.2.params +0 -62
- data/test_files/opd1/twenty_scans.mzXML +0 -418
- data/test_files/opd1/twenty_scans.v2.1.mzXML +0 -382
- data/test_files/opd1/twenty_scans_answ.lmat +0 -0
- data/test_files/opd1/twenty_scans_answ.lmata +0 -9
- data/test_files/opd1_020_beginning.RAW +0 -0
- data/test_files/opd1_2runs_2mods/data/020.mzData.xml +0 -683
- data/test_files/opd1_2runs_2mods/data/020.readw.mzXML +0 -382
- data/test_files/opd1_2runs_2mods/data/040.mzData.xml +0 -683
- data/test_files/opd1_2runs_2mods/data/040.readw.mzXML +0 -382
- data/test_files/opd1_2runs_2mods/data/README.txt +0 -6
- data/test_files/opd1_2runs_2mods/interact-opd1_mods__small.xml +0 -753
- data/test_files/orbitrap_mzData/000_cut.xml +0 -1920
- data/test_files/pepproph_small.xml +0 -4691
- data/test_files/phobius.small.noheader.txt +0 -50
- data/test_files/phobius.small.small.txt +0 -53
- data/test_files/s01_anC1_ld020mM.key.txt +0 -25
- data/test_files/s01_anC1_ld020mM.meth +0 -0
- data/test_files/small.fasta +0 -297
- data/test_files/small.sqt +0 -87
- data/test_files/smallraw.RAW +0 -0
- data/test_files/tf_bioworks2excel.bioXML +0 -14340
- data/test_files/tf_bioworks2excel.txt.actual +0 -1035
- data/test_files/toppred.small.out +0 -416
- data/test_files/toppred.xml.out +0 -318
- data/test_files/validator_hits_separate/bias_bioworks_small_HS.fasta +0 -7
- data/test_files/validator_hits_separate/bioworks_small_HS.xml +0 -5651
- data/test_files/yeast_gly_small-prot.xml +0 -265
- data/test_files/yeast_gly_small.1.0_1.0_1.0.parentTimes +0 -6
- data/test_files/yeast_gly_small.xml +0 -3807
- data/test_files/yeast_gly_small2.parentTimes +0 -6
data/script/tpp_installer.rb
DELETED
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/ruby -w
|
|
2
|
-
|
|
3
|
-
###########################################################
|
|
4
|
-
# GLOBAL CONFIG:
|
|
5
|
-
|
|
6
|
-
## SYSTEM SPECIFIC VARIABLES:
|
|
7
|
-
BIN_DIR = '/usr/bin/'
|
|
8
|
-
NICE_PATH = '/usr/bin/nice' # path to nice program on your system
|
|
9
|
-
|
|
10
|
-
## APACHE VARIABLES:
|
|
11
|
-
MODS_AVAILABLE = '/etc/apache2/mods-available/include.load'
|
|
12
|
-
MODS_ENABLED = '/etc/apache2/mods-enabled/include.load'
|
|
13
|
-
# A File that will be included by the webserver to add specific directives:
|
|
14
|
-
TPP_CONF = '/etc/apache2/conf.d/tpp.conf'
|
|
15
|
-
# The system call to restart your apache
|
|
16
|
-
RESTART_APACHE = '/etc/init.d/apache2 restart'
|
|
17
|
-
|
|
18
|
-
## SETUP YOUR TPP INSTALL:
|
|
19
|
-
TPP_INSTALL = "/work/tpp" # directory to hold TPP executables, etc.
|
|
20
|
-
# (where TPP_ROOT will actually go)
|
|
21
|
-
TPP_DATA_PATH = "/work/tpp-data" # directory to hold your tpp data files
|
|
22
|
-
|
|
23
|
-
TPP_WEB = '/tpp/'
|
|
24
|
-
TPP_ISB_DEF_DIR = '/tools/bin/TPP/'
|
|
25
|
-
TPP_ISB_DIR = 'tpp' # DON'T change this
|
|
26
|
-
|
|
27
|
-
WEBSERVER_ROOT = '/var/www'
|
|
28
|
-
TPP_WEB_PATH_STUB = WEBSERVER_ROOT # real directory to make soft link inside
|
|
29
|
-
# For security reasons, TPP_VIS_PATH should NOT be the same as TPP_DATA_PATH
|
|
30
|
-
TPP_VIS_PATH = WEBSERVER_ROOT + '/tpp-vis/'
|
|
31
|
-
TPP_DATA_PATH_SOFT_LINK = WEBSERVER_ROOT + '/tpp'
|
|
32
|
-
#TPP_WEB_PATH = WEBSERVER_ROOT + TPP_DATA_PATH_SOFT_LINK
|
|
33
|
-
|
|
34
|
-
## VARIABLES YOU PROBABLY DON'T WANT TO CHANGE:
|
|
35
|
-
XINTERACT_WRAPPER = 'xinteract'
|
|
36
|
-
XINTERACT_ISB = 'xinteract-isb'
|
|
37
|
-
makefile_incl = 'src/Makefile.incl'
|
|
38
|
-
sequest2xml = 'src/Parsers/Algorithm2XML/Sequest2XML/Sequest2XML.cxx'
|
|
39
|
-
|
|
40
|
-
### VARIABLES YOU PROBABLY SHOULDN'T CHANGE UNLESS YOU MODIFY the config
|
|
41
|
-
### scripts
|
|
42
|
-
HARD_CODED_TPP_INSTALL = '/tools/bin/TPP/tpp/'
|
|
43
|
-
TPP_ROOT = HARD_CODED_TPP_INSTALL
|
|
44
|
-
HARD_CODED_TPP_INSTALL_STUB = '/tools/bin/TPP' # real dir to hold soft link
|
|
45
|
-
###########################################################
|
|
46
|
-
|
|
47
|
-
require 'fileutils'
|
|
48
|
-
|
|
49
|
-
#######################################################
|
|
50
|
-
# SUBROUTINES:
|
|
51
|
-
#######################################################
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
# creates the file with the given contents unless the file already exists AND already contains the contents
|
|
55
|
-
def make_file(file, string)
|
|
56
|
-
puts "Trying to make file: #{file}"
|
|
57
|
-
if File.exist?(file) && string == IO.read(file)
|
|
58
|
-
puts "File already exists with the given string"
|
|
59
|
-
else
|
|
60
|
-
puts "Made file with given string"
|
|
61
|
-
File.open(file, "w") { |out| out.print string }
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def mkpath(mpath)
|
|
66
|
-
path = mpath.chomp('/')
|
|
67
|
-
if File.exist? path; puts "Dir #{path} exists"
|
|
68
|
-
else
|
|
69
|
-
FileUtils.mkpath path
|
|
70
|
-
puts "CREATING #{path}"
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def chmod(code, path)
|
|
75
|
-
printf("Changing mode of #{path} to %o", code)
|
|
76
|
-
FileUtils.chmod code, path
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# creates wrapper around xinteract that runs #{XINTERACT_ISB} and moves files
|
|
80
|
-
# to #{TPP_VIS_PATH}
|
|
81
|
-
def xinteract_wrapper
|
|
82
|
-
tpp_data_path_wts = TPP_DATA_PATH.chomp('/')+'/'
|
|
83
|
-
"# Runs xinteract with whatever command lines given
|
|
84
|
-
# And then moves shtml files to #{TPP_VIS_PATH}
|
|
85
|
-
#{XINTERACT_ISB} $@
|
|
86
|
-
ruby -e 'if Dir[\"#{tpp_data_path_wts}*.shtml\"].size > 0 ; system \"mv #{tpp_data_path_wts}*.shtml #{TPP_VIS_PATH}\"; puts \"moving #{tpp_data_path_wts}*.shtml to #{TPP_VIS_PATH} for webserver security.\" end'
|
|
87
|
-
".gsub(/^\s+/,'')
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def swap_line(file, regex, newval)
|
|
91
|
-
puts "EDITING: #{file}"
|
|
92
|
-
tmpfile = "tmp.tmp"
|
|
93
|
-
File.open(tmpfile, "w") do |out|
|
|
94
|
-
out.puts IO.readlines(file).collect{|line| line.sub(regex, newval) }
|
|
95
|
-
end
|
|
96
|
-
File.rename(tmpfile, file)
|
|
97
|
-
end
|
|
98
|
-
#{tpp_data_path_wts}*.shtml
|
|
99
|
-
def soft_link(mtarget, mlink)
|
|
100
|
-
(link,target) = [mlink,mtarget].collect {|t| t.chomp('/')}
|
|
101
|
-
if File.exist? link ;#{tpp_data_path_wts}*.shtml puts "Link #{link} exists!"
|
|
102
|
-
else
|
|
103
|
-
FileUtils.ln_sf target, link
|
|
104
|
-
puts "CREATING soft link: #{link} -> #{target}"
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def sys(string)
|
|
109
|
-
puts "PERFORMING: #{string}"
|
|
110
|
-
puts `#{string}`
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
def modify_and_restart_apache(tpp_root, webserver_root, tpp_vis_path, mods_avail, mods_enab)
|
|
114
|
-
# APACHE:
|
|
115
|
-
soft_link(mods_avail, mods_enab)
|
|
116
|
-
|
|
117
|
-
conf_string = <<END_DOC
|
|
118
|
-
#
|
|
119
|
-
# ISB-Tools Trans Proteomic Pipeline directive
|
|
120
|
-
#
|
|
121
|
-
|
|
122
|
-
Alias /tpp/html \"#{tpp_root}html\"
|
|
123
|
-
<Directory \"#{tpp_root}html\">
|
|
124
|
-
AllowOverride None
|
|
125
|
-
Options Includes Indexes FollowSymLinks MultiViews
|
|
126
|
-
Order allow,deny
|
|
127
|
-
Allow from all
|
|
128
|
-
</Directory>
|
|
129
|
-
|
|
130
|
-
<Directory \"#{tpp_root}schema\">
|
|
131
|
-
AllowOverride None
|
|
132
|
-
Options Includes Indexes FollowSymLinks MultiViews
|
|
133
|
-
Order allow,deny
|
|
134
|
-
Allow from all
|
|
135
|
-
</Directory>
|
|
136
|
-
|
|
137
|
-
ScriptAlias /tpp/cgi-bin/ \"#{tpp_root}cgi-bin/\"
|
|
138
|
-
<Directory \"#{tpp_root}cgi-bin\">
|
|
139
|
-
AllowOverride AuthConfig Limit
|
|
140
|
-
Options ExecCGI
|
|
141
|
-
Order allow,deny
|
|
142
|
-
Allow from all
|
|
143
|
-
SetEnv WEBSERVER_ROOT #{webserver_root}
|
|
144
|
-
</Directory>
|
|
145
|
-
|
|
146
|
-
<Directory \"#{tpp_vis_path}\">
|
|
147
|
-
Options Includes
|
|
148
|
-
</Directory>
|
|
149
|
-
|
|
150
|
-
END_DOC
|
|
151
|
-
|
|
152
|
-
make_file(TPP_CONF, conf_string)
|
|
153
|
-
sys "#{RESTART_APACHE}"
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
###############################################################
|
|
159
|
-
# MAIN
|
|
160
|
-
###############################################################
|
|
161
|
-
|
|
162
|
-
if ARGV.size < 1
|
|
163
|
-
puts "
|
|
164
|
-
usage: #{File.basename(__FILE__)} trans_proteomic_pipeline_dir
|
|
165
|
-
|
|
166
|
-
Will install tpp on a ubuntu system (perhaps a debian system, too?). With
|
|
167
|
-
slight modifications, you may get this to install on other machines.
|
|
168
|
-
Requires apache2 (sudo apt-get apache2). The installation uses all the
|
|
169
|
-
default TPP locations because a lot of these are quite hard-coded in the tpp
|
|
170
|
-
despite the config files they use. Instead, soft-links are made so that you
|
|
171
|
-
can configure your system however you desire. Will probably not clobber
|
|
172
|
-
existing files, but it might ;)
|
|
173
|
-
|
|
174
|
-
PLEASE SET GLOBAL VARIABLES in this script (#{File.basename(__FILE__)})!
|
|
175
|
-
|
|
176
|
-
PREREQS:
|
|
177
|
-
sudo apt-get install <prereq>
|
|
178
|
-
make, g++, ruby, apache2, libzzip-dev, libgd2-dev, libpng3-dev libexpat-dev
|
|
179
|
-
--> or all on one line:
|
|
180
|
-
sudo apt-get install make g++ ruby apache2 libzzip-dev libgd2-dev libpng3-dev libexpat-dev
|
|
181
|
-
|
|
182
|
-
In all likelihood, this will need to be run as root.
|
|
183
|
-
"
|
|
184
|
-
exit
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
#########################
|
|
188
|
-
# MAKE INSTALLATION DIR:
|
|
189
|
-
#########################
|
|
190
|
-
mkpath HARD_CODED_TPP_INSTALL_STUB # dir to hold soft link
|
|
191
|
-
mkpath TPP_INSTALL
|
|
192
|
-
soft_link(TPP_INSTALL, HARD_CODED_TPP_INSTALL.sub(/\/$/,''))
|
|
193
|
-
|
|
194
|
-
############################
|
|
195
|
-
# MAKE WEB DIRS:
|
|
196
|
-
############################
|
|
197
|
-
mkpath TPP_WEB_PATH_STUB
|
|
198
|
-
soft_link(TPP_DATA_PATH, TPP_DATA_PATH_SOFT_LINK)
|
|
199
|
-
|
|
200
|
-
mkpath TPP_DATA_PATH.chomp('/')
|
|
201
|
-
chmod(0777, TPP_DATA_PATH.chomp('/'))
|
|
202
|
-
mkpath TPP_VIS_PATH.chomp('/')
|
|
203
|
-
|
|
204
|
-
## VERY SPECIFIC to OUR SYSTEM
|
|
205
|
-
soft_link('/project/marcotte/marcotte/ms', TPP_DATA_PATH.chomp('/') + '/ms')
|
|
206
|
-
system "sudo chown john:marcotte #{TPP_DATA_PATH.chomp('/')}"
|
|
207
|
-
system "sudo chown john:marcotte #{TPP_VIS_PATH.chomp('/')}"
|
|
208
|
-
|
|
209
|
-
############################
|
|
210
|
-
# FIX UP APACHE
|
|
211
|
-
############################
|
|
212
|
-
modify_and_restart_apache(TPP_ROOT, WEBSERVER_ROOT, TPP_VIS_PATH, MODS_AVAILABLE, MODS_ENABLED)
|
|
213
|
-
|
|
214
|
-
############################
|
|
215
|
-
# MAKE and INSTALL
|
|
216
|
-
############################
|
|
217
|
-
Dir.chdir ARGV[0] do
|
|
218
|
-
############################
|
|
219
|
-
# SWAP OUT BAD LINES
|
|
220
|
-
############################
|
|
221
|
-
swap_line(makefile_incl, /TPP_ROOT=.*/, 'TPP_ROOT='+TPP_ROOT)
|
|
222
|
-
swap_line(makefile_incl, /TPP_WEB=.*/, 'TPP_WEB='+TPP_WEB)
|
|
223
|
-
swap_line(sequest2xml, /if\(k < 12\) \{/, 'if(k < 6) {' )
|
|
224
|
-
swap_line(sequest2xml, /cerr << " error: length of " << result->spectrum_ << " less than 13" << endl;/, 'cerr << " error: length of " << result->spectrum_ << " less than 6" << endl;')
|
|
225
|
-
# CLEAN, MAKE, MAKE INSTALL:
|
|
226
|
-
Dir.chdir('src') do
|
|
227
|
-
sys "make clean"
|
|
228
|
-
sys "make all"
|
|
229
|
-
sys "make install"
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
############################
|
|
234
|
-
# CREATE ADDITIONAL LINKS:
|
|
235
|
-
############################
|
|
236
|
-
soft_link(NICE_PATH, '/bin/nice')
|
|
237
|
-
soft_link(TPP_ROOT + 'bin/xinteract', BIN_DIR + XINTERACT_ISB)
|
|
238
|
-
puts "LINKING batchcoverage to #{BIN_DIR}batchcoverage"
|
|
239
|
-
soft_link(TPP_ROOT + 'bin/batchcoverage', BIN_DIR + 'batchcoverage')
|
|
240
|
-
soft_link(TPP_ROOT + 'bin/Sequest2XML', BIN_DIR + 'Sequest2XML')
|
|
241
|
-
|
|
242
|
-
############################
|
|
243
|
-
# CREATE xinteract wrapper:
|
|
244
|
-
############################
|
|
245
|
-
puts "CREATING xinteract wrapper script '#{BIN_DIR}#{XINTERACT_WRAPPER}'"
|
|
246
|
-
File.open("#{BIN_DIR}#{XINTERACT_WRAPPER}", "w") do |fh| fh.print(xinteract_wrapper) end
|
|
247
|
-
puts `chmod +x #{BIN_DIR}#{XINTERACT_WRAPPER}`
|
|
248
|
-
|
|
249
|
-
|
data/specs/align_spec.rb
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
require File.expand_path( File.dirname(__FILE__) + '/spec_helper' )
|
|
2
|
-
|
|
3
|
-
require 'align'
|
|
4
|
-
|
|
5
|
-
describe Align do
|
|
6
|
-
|
|
7
|
-
before(:each) do
|
|
8
|
-
@mz1 = Tfiles + '4-03-03_mzXML/000.mzXML.timeIndex'
|
|
9
|
-
@mz2 = Tfiles + '4-03-03_mzXML/020.mzXML.timeIndex'
|
|
10
|
-
@prt = Tfiles + '4-03-03_small-prot.xml'
|
|
11
|
-
@pep = Tfiles + '4-03-03_small.xml'
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
it_should 'finds overlapping peptides of same seq+charge' do
|
|
15
|
-
s1 = 'DETTIVEGAGDAEAIQGR'
|
|
16
|
-
c1 = '2'
|
|
17
|
-
s2 = 'TDDVAGDGTTTATVLAQALVR'
|
|
18
|
-
c2 = '2'
|
|
19
|
-
|
|
20
|
-
al = Align.new
|
|
21
|
-
pep1 = al.peps_with_scans([@mz1], @prt, @pep, 0.05 ,0.05 ,0.05 )
|
|
22
|
-
pep2 = al.peps_with_scans(@mz2, @prt, @pep, 0.98,0.98,0.98 )
|
|
23
|
-
olap = al.overlapping_peps_by_seqcharge([pep1, pep2])
|
|
24
|
-
olap.each do |peps|
|
|
25
|
-
has_seqcharges = []
|
|
26
|
-
peps.each do |pep|
|
|
27
|
-
if pep.sequence == s1 && pep.charge == c1
|
|
28
|
-
has_seqcharges << true
|
|
29
|
-
elsif pep.sequence == s2 && pep.charge == c2
|
|
30
|
-
has_seqcharges << true
|
|
31
|
-
else
|
|
32
|
-
has_seqcharges << false
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
has_seqcharges.each { |c| c.should be_true }
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
### !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
40
|
-
# @TODO: CURRENT WORK!
|
|
41
|
-
it_should 'should find overlapping peptides at a seqcharge with a filter' do
|
|
42
|
-
al = Align.new
|
|
43
|
-
pep1 = al.peps_with_scans([@mz1], @prt, @pep, 0.0 ,0.0 ,0.0 )
|
|
44
|
-
pep2 = al.peps_with_scans(@mz2, @prt, @pep, 0.0, 0.0, 0.0 )
|
|
45
|
-
max_dups = nil
|
|
46
|
-
outlier_cutoff = 0.0
|
|
47
|
-
olap = al.overlapping_peps_by_seqcharge_with_filter([pep1, pep2], max_dups, outlier_cutoff)
|
|
48
|
-
olap.each do |peps|
|
|
49
|
-
p peps
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it_should 'should toss outliers' do
|
|
54
|
-
|
|
55
|
-
# Consistency/sanity checks right now (not accuracy)
|
|
56
|
-
x = [-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,10,0 ,1,2,3,4,5,6,7,8,9]
|
|
57
|
-
y = [-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0 ,10,1,2,3,4,5,6,7,8,9]
|
|
58
|
-
expx2 = [-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9]
|
|
59
|
-
expy2 = [-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9]
|
|
60
|
-
|
|
61
|
-
pcls = Proph::Pep
|
|
62
|
-
scls = MS::Scan
|
|
63
|
-
|
|
64
|
-
pep_groups = [x,y].collect do |arr|
|
|
65
|
-
arr.collect do |val|
|
|
66
|
-
pep = pcls.new
|
|
67
|
-
pep.arithmetic_avg_scan_by_parent_time = scls.new(nil,nil,val.to_f)
|
|
68
|
-
pep
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
al = Align.new
|
|
73
|
-
deviations = 3.2
|
|
74
|
-
size_before = pep_groups.first.size
|
|
75
|
-
al.toss_outliers(pep_groups, deviations)
|
|
76
|
-
(size_before - pep_groups.first.size).should == 2
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
end
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
require File.expand_path( File.dirname(__FILE__) + '/../spec_helper' )
|
|
2
|
-
require 'fileutils'
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
$XML_SANITY_LINES = ['<sample_enzyme name="Trypsin">', '<specificity cut="KR" no_cut="P" sense="C"/>', '<parameter name="diff_search_options" value="0.000000 S 0.000000 C 0.000000 M 0.000000 X 0.000000 T 0.000000 Y"/>']
|
|
6
|
-
|
|
7
|
-
$XML_SANITY_MATCHES = [/<spectrum_query spectrum="0\d0.\d+.\d+.[123]" start_scan="\d+" end_scan="\d+" precursor_neutral_mass="[\d\.]+" assumed_charge="[123]" index="\d+">/,
|
|
8
|
-
/ <search_hit hit_rank="\d" peptide="[\w\-\.]+" peptide_prev_aa="." peptide_next_aa="." protein=".*" num_tot_proteins="\d+" num_matched_ions="\d+" tot_num_ions="\d+" calc_neutral_pep_mass="[\d\.]+" massdiff="[\+\-][\d\.]+" num_tol_term="\d" num_missed_cleavages="\d" is_rejected="[01]">/,
|
|
9
|
-
/<search_score name="xcorr" value="[\d\.]+"\/>/,
|
|
10
|
-
/<search_score name="deltacn" value="[\d\.]+"\/>/,
|
|
11
|
-
/<search_score name="deltacnstar" value="[01]"\/>/,
|
|
12
|
-
/<search_score name="spscore" value="[\d\.]+"\/>/,
|
|
13
|
-
/<search_score name="sprank" value="\d+"\/>/,
|
|
14
|
-
]
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
describe 'bioworks_to_pepxml.rb' do
|
|
18
|
-
before(:all) do
|
|
19
|
-
@tf_mzxml_path = Tfiles_l + "/yeast_gly_mzXML"
|
|
20
|
-
@tf_bioworks_xml = Tfiles + "/bioworks_small.xml"
|
|
21
|
-
@tf_params = Tfiles + '/bioworks32.params'
|
|
22
|
-
@out_path = Tfiles + '/pepxml/'
|
|
23
|
-
@progname = 'bioworks_to_pepxml.rb'
|
|
24
|
-
@no_delete = false
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
it_should_behave_like "a cmdline program"
|
|
28
|
-
|
|
29
|
-
def _basic(cmd, prc)
|
|
30
|
-
puts "Performing: #{cmd}" if $DEBUG
|
|
31
|
-
reply = `#{cmd}`
|
|
32
|
-
puts reply if $DEBUG
|
|
33
|
-
%w(000 020).each do |file|
|
|
34
|
-
ffile = @out_path + file + ".xml"
|
|
35
|
-
prc.call(ffile)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
spec_large do
|
|
40
|
-
it 'works on a real bioworks.xml file' do
|
|
41
|
-
cmd = "#{@cmd} -p #{@tf_params} -o #{@out_path} #{@tf_bioworks_xml} -m #{@tf_mzxml_path} -d /work/special/path --copy_mzxml"
|
|
42
|
-
## FILES EXIST:
|
|
43
|
-
prc = proc {|file|
|
|
44
|
-
file.exist_as_a_file?.should be_true
|
|
45
|
-
beginning = IO.readlines(file)[0,50].join("\n")
|
|
46
|
-
$XML_SANITY_LINES.each do |line|
|
|
47
|
-
beginning.should include(line)
|
|
48
|
-
#beginning.include?(line).should be_true
|
|
49
|
-
end
|
|
50
|
-
$XML_SANITY_MATCHES.each do |match|
|
|
51
|
-
beginning.should =~ match
|
|
52
|
-
end
|
|
53
|
-
}
|
|
54
|
-
_basic(cmd, prc)
|
|
55
|
-
## COPY MZXML:
|
|
56
|
-
%w(000 020).each do |file|
|
|
57
|
-
mzxml_file = File.join(@out_path, "#{file}.mzXML")
|
|
58
|
-
mzxml_file.exist_as_a_file?.should be_true
|
|
59
|
-
end
|
|
60
|
-
## CLEANUP:
|
|
61
|
-
unless @no_delete then FileUtils.rm_rf(@out_path) end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
spec_large do
|
|
66
|
-
it 'transforms database name when its proper to do so' do
|
|
67
|
-
cmd = "#{@cmd} -p #{@tf_params} -o #{@out_path} #{@tf_bioworks_xml} -m #{@tf_mzxml_path}"
|
|
68
|
-
db_re = /C:\\Xcalibur\\database\\ecoli_K12_ncbi_20060321.fasta/
|
|
69
|
-
IO.read(@tf_params).should =~ db_re
|
|
70
|
-
prc = proc {|file|
|
|
71
|
-
file.exist_as_a_file?.should be_true
|
|
72
|
-
IO.read(file).should_not =~ db_re
|
|
73
|
-
}
|
|
74
|
-
_basic(cmd, prc)
|
|
75
|
-
unless @no_delete then FileUtils.rm_rf(@out_path) end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
require File.expand_path( File.dirname(__FILE__) + '/../spec_helper' )
|
|
2
|
-
|
|
3
|
-
require 'fasta'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class Fasta
|
|
7
|
-
def same_sized_proteins?(other_fasta_obj_or_file)
|
|
8
|
-
other = Fasta.to_fasta(other_fasta_obj_or_file)
|
|
9
|
-
@prots.zip(other.prots).all? do |a,b|
|
|
10
|
-
a.aaseq.size == b.aaseq.size
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# This is tough to say 'for sure' Right now, we consider the proteins
|
|
15
|
-
# shuffled if they are all the same size and 2/3 or more of the peptides are
|
|
16
|
-
# different than the other (this is designed for small sets of proteins
|
|
17
|
-
# where it is possible one of the peptides is equal to the other).
|
|
18
|
-
def shuffled?(other_fasta_obj_or_file)
|
|
19
|
-
other = Fasta.to_fasta(other_fasta_obj_or_file)
|
|
20
|
-
if !same_sized_proteins?(other)
|
|
21
|
-
false
|
|
22
|
-
else
|
|
23
|
-
(same, different) = @prots.zip(other.prots).partition do |prota, protb|
|
|
24
|
-
prota == protb
|
|
25
|
-
end
|
|
26
|
-
fraction_different = different.size.to_f / (same.size + different.size)
|
|
27
|
-
fraction_different >= 2.0/3
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
describe "a manipulator of a fasta file", :shared => true do
|
|
33
|
-
before(:all) do
|
|
34
|
-
@filestring = ">gi|P1
|
|
35
|
-
AMKRGAN
|
|
36
|
-
>gi|P2
|
|
37
|
-
CRGATKKTAGRPMEK
|
|
38
|
-
>gi|P3
|
|
39
|
-
PEPTIDE
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
@rev_filestring = ">gi|P1
|
|
43
|
-
NAGRKMA
|
|
44
|
-
>gi|P2
|
|
45
|
-
KEMPRGATKKTAGRC
|
|
46
|
-
>gi|P3
|
|
47
|
-
EDITPEP
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
@rev_pref_filestring = ">REV_gi|P1
|
|
51
|
-
NAGRKMA
|
|
52
|
-
>REV_gi|P2
|
|
53
|
-
KEMPRGATKKTAGRC
|
|
54
|
-
>REV_gi|P3
|
|
55
|
-
EDITPEP
|
|
56
|
-
"
|
|
57
|
-
|
|
58
|
-
@rev_tryptic_filestring = ">gi|P1
|
|
59
|
-
MAKRNAG
|
|
60
|
-
>gi|P2
|
|
61
|
-
CRTAGKKEMPRGATK
|
|
62
|
-
>gi|P3
|
|
63
|
-
EDITPEP
|
|
64
|
-
"
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
before(:each) do
|
|
69
|
-
testdir = File.dirname(__FILE__)
|
|
70
|
-
@tmpfile = Tfiles + "/littlefasta.trash.fasta"
|
|
71
|
-
@f = Tfiles + "/trash.fasta"
|
|
72
|
-
File.open(@tmpfile, "w") {|fh| fh.print @filestring }
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
after(:each) do
|
|
76
|
-
File.unlink @tmpfile if File.exist? @tmpfile
|
|
77
|
-
File.unlink @f if File.exist? @f
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
it 'reverses protein sequences' do
|
|
81
|
-
reverse_the_file
|
|
82
|
-
fastap(@f).to_s.should == @rev_filestring
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def reverse_the_file
|
|
86
|
-
do_it(:reverse)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
it 'shuffles protein sequences' do
|
|
90
|
-
shuffle_the_file
|
|
91
|
-
Fasta.new(@f).shuffled?(Fasta.from_string(@filestring)).should be_true
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def shuffle_the_file
|
|
95
|
-
do_it(:shuffle)
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
it 'concatenates sequences' do
|
|
99
|
-
concatenate_sequences
|
|
100
|
-
lns = fastalns(@f)
|
|
101
|
-
strlns(@filestring).should == lns[0..5] # first part equal
|
|
102
|
-
strlns(@rev_pref_filestring).should == lns[6..-1] # "second part equal")
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
def concatenate_sequences
|
|
106
|
-
do_it(:reverse, :cat => true, :prefix => 'REV_')
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
it 'makes prefixes' do
|
|
110
|
-
make_prefixes
|
|
111
|
-
#@shaker.reverse(@tmpfile, :out => @f, :prefix => 'SILLY_')
|
|
112
|
-
fp = fastap(@f)
|
|
113
|
-
fp.each do |prt|
|
|
114
|
-
prt.header.should match(/^>SILLY_.+/)
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def make_prefixes
|
|
119
|
-
do_it(:reverse, :prefix => 'SILLY_')
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
it 'makes fractions of proteins' do
|
|
123
|
-
make_fractions_of_proteins(1.0/3)
|
|
124
|
-
fastap(@f).size.should == 1
|
|
125
|
-
fastap(@f).first.header.should =~ /^>[^M]/
|
|
126
|
-
|
|
127
|
-
# this guy gets rounded up on the command line so that it fails there
|
|
128
|
-
#make_fractions_of_proteins(2.0/3)
|
|
129
|
-
#fastap(@f).size.should == 2
|
|
130
|
-
#fastap(@f).each do |prt|
|
|
131
|
-
# prt.header.should =~ /^>[^M]/
|
|
132
|
-
#end
|
|
133
|
-
|
|
134
|
-
make_fractions_of_proteins(1.0)
|
|
135
|
-
fastap(@f).size.should == 3
|
|
136
|
-
fastap(@f).each do |prt|
|
|
137
|
-
prt.header.should =~ /^>[^M]/
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
def make_fractions_of_proteins(fraction)
|
|
142
|
-
do_it(:shuffle, :fraction => fraction)
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
it 'makes fractions with labels (for > 1)' do
|
|
147
|
-
make_fractions_of_proteins(1.1)
|
|
148
|
-
fastap(@f).size.should == 4
|
|
149
|
-
fastap(@f).any? do |prt|
|
|
150
|
-
prt.header =~ /^>[^M]/
|
|
151
|
-
end.should be_true
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
make_fractions_of_proteins(2.6)
|
|
155
|
-
fastap(@f).size.should == 8
|
|
156
|
-
|
|
157
|
-
make_reverse_cat_fractions(2.0)
|
|
158
|
-
fastap(@f).size.should == 9
|
|
159
|
-
|
|
160
|
-
fp = Fasta.new(@f)
|
|
161
|
-
fp[0..2].each do |prt|
|
|
162
|
-
prt.header.should =~ /^>/
|
|
163
|
-
end
|
|
164
|
-
fp[3..5].each do |prt|
|
|
165
|
-
prt.header.should =~ /^>MINE_f0_/
|
|
166
|
-
end
|
|
167
|
-
fp[6..8].each do |prt|
|
|
168
|
-
prt.header.should =~ /^>MINE_f1_/
|
|
169
|
-
end
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
def make_reverse_cat_fractions(fraction, prefix='MINE_')
|
|
173
|
-
do_it(:reverse, :fraction => fraction, :cat => true, :prefix => prefix)
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
def reverse_tryptic_peptides
|
|
177
|
-
do_it(:reverse, :tryptic_peptides => true)
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
it 'reverses tryptic peptides' do
|
|
181
|
-
reverse_tryptic_peptides
|
|
182
|
-
Fasta.from_string(@rev_tryptic_filestring).should == Fasta.new(@f)
|
|
183
|
-
end
|
|
184
|
-
|
|
185
|
-
def shuffle_tryptic_peptides
|
|
186
|
-
do_it(:shuffle, :tryptic_peptides => true)
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
it 'shuffles tryptic peptides (rerun on failure to recheck)' do
|
|
190
|
-
shuffle_tryptic_peptides
|
|
191
|
-
lns = fastap(@f).to_s.split("\n")
|
|
192
|
-
lns[1][2..3].should == 'KR'
|
|
193
|
-
lns[3][1..1].should == 'R'
|
|
194
|
-
lns[3].size.should == 'CRGATKKTAGRPMEK'.size
|
|
195
|
-
lns[3].should_not == 'CRGATKKTAGRPMEK' #sequence is randomised from original [remote chance of failure] rerun to make sure
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
def strlns(str)
|
|
199
|
-
str.split("\n")
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
def fastalns(fn)
|
|
203
|
-
fn.exist_as_a_file?.should be_true
|
|
204
|
-
IO.read(fn).split("\n")
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
# returns the fasta object proteins
|
|
208
|
-
def fastap(fn)
|
|
209
|
-
@f.exist_as_a_file?.should be_true
|
|
210
|
-
Fasta.new(fn).prots
|
|
211
|
-
end
|
|
212
|
-
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
describe FastaShaker, "by method call" do
|
|
216
|
-
|
|
217
|
-
before(:all) do
|
|
218
|
-
@shaker = FastaShaker.new
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
it_should_behave_like "a manipulator of a fasta file"
|
|
222
|
-
|
|
223
|
-
def do_it(method, additional_opts={})
|
|
224
|
-
opts = {:out => @f}
|
|
225
|
-
@shaker.send(method, @tmpfile, opts.merge(additional_opts))
|
|
226
|
-
end
|
|
227
|
-
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
describe FastaShaker, "by command line long args" do
|
|
232
|
-
before(:all) do
|
|
233
|
-
@progname = 'fasta_shaker.rb'
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
it_should_behave_like "a cmdline program"
|
|
237
|
-
it_should_behave_like "a manipulator of a fasta file"
|
|
238
|
-
|
|
239
|
-
# returns an array of the args
|
|
240
|
-
def opts_to_cmd_args(hash)
|
|
241
|
-
opts = []
|
|
242
|
-
hash.each do |k,v|
|
|
243
|
-
opts.push('--' + k.to_s)
|
|
244
|
-
unless (v == true) or (v == false)
|
|
245
|
-
opts.push(v)
|
|
246
|
-
end
|
|
247
|
-
end
|
|
248
|
-
opts
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
def do_it(method, additional_opts={})
|
|
252
|
-
opts = {:out => @f}
|
|
253
|
-
opts.merge!(additional_opts)
|
|
254
|
-
cmd = [@cmd, method, @tmpfile, *(opts_to_cmd_args(opts))].join(" ")
|
|
255
|
-
#puts cmd
|
|
256
|
-
system cmd
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
end
|