quorum 0.1.0 → 0.2.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.
Files changed (48) hide show
  1. data/Gemfile.lock +82 -74
  2. data/HISTORY.md +9 -0
  3. data/README.rdoc +101 -23
  4. data/app/assets/javascripts/quorum/jobs.js +45 -3
  5. data/app/controllers/quorum/jobs_controller.rb +47 -2
  6. data/app/models/quorum/job.rb +52 -9
  7. data/app/views/quorum/jobs/new.html.erb +7 -6
  8. data/app/views/quorum/jobs/show.html.erb +7 -118
  9. data/app/views/quorum/jobs/templates/_blast_detailed_report_template.html.erb +53 -0
  10. data/app/views/quorum/jobs/templates/_blast_template.html.erb +68 -0
  11. data/config/routes.rb +2 -0
  12. data/db/migrate/20120109232446_add_hit_display_id_to_blast_reports.rb +8 -0
  13. data/lib/generators/quorum/images_generator.rb +18 -0
  14. data/lib/generators/quorum/install_generator.rb +41 -13
  15. data/lib/generators/templates/README +1 -1
  16. data/lib/generators/templates/blast.rb +18 -7
  17. data/lib/generators/templates/blast_db.rb +106 -0
  18. data/lib/generators/templates/fetch +115 -0
  19. data/lib/generators/templates/quorum_initializer.rb +1 -1
  20. data/lib/generators/templates/quorum_settings.yml +4 -4
  21. data/lib/quorum/helpers.rb +71 -1
  22. data/lib/quorum/version.rb +1 -1
  23. data/lib/quorum.rb +15 -5
  24. data/lib/workers/quorum.rb +12 -2
  25. data/quorum.gemspec +4 -2
  26. data/spec/data/seqs_not_fa.txt +16 -16
  27. data/spec/dummy/config/initializers/quorum_initializer.rb +1 -1
  28. data/spec/dummy/config/initializers/resque.rb +4 -1
  29. data/spec/dummy/config/quorum_settings.yml +4 -4
  30. data/spec/dummy/db/schema.rb +8 -1
  31. data/spec/dummy/quorum/bin/fetch +115 -0
  32. data/spec/dummy/quorum/blastdb/test.nin +0 -0
  33. data/spec/dummy/quorum/blastdb/test.pin +0 -0
  34. data/spec/dummy/quorum/lib/fetch_tools/blast_db.rb +106 -0
  35. data/spec/dummy/quorum/lib/search_tools/blast.rb +18 -7
  36. data/spec/models/job_spec.rb +3 -4
  37. data/spec/quorum_installed_spec.rb +5 -0
  38. data/spec/requests/jobs_spec.rb +14 -1
  39. data/spec/spec_helper.rb +32 -1
  40. data/spec/support/streams.rb +16 -0
  41. data/spec/templates/blast_db_spec.rb +63 -0
  42. data/spec/templates/blast_spec.rb +108 -2
  43. metadata +64 -37
  44. /data/app/assets/images/quorum/{knight_rider.gif → loading.gif} +0 -0
  45. /data/app/views/quorum/jobs/{_blastn_form.html.erb → form/_blastn_form.html.erb} +0 -0
  46. /data/app/views/quorum/jobs/{_blastp_form.html.erb → form/_blastp_form.html.erb} +0 -0
  47. /data/app/views/quorum/jobs/{_blastx_form.html.erb → form/_blastx_form.html.erb} +0 -0
  48. /data/app/views/quorum/jobs/{_tblastn_form.html.erb → form/_tblastn_form.html.erb} +0 -0
@@ -0,0 +1,106 @@
1
+ $LOAD_PATH.unshift(File.expand_path("../../", __FILE__))
2
+
3
+ require 'logger'
4
+
5
+ module Quorum
6
+ module FetchTools
7
+ #
8
+ # Blast DB Fetch Tool
9
+ #
10
+ class BlastDb
11
+
12
+ # blastdbcmd -dbtype
13
+ DB_TYPE = {
14
+ "blastn" => "nucl",
15
+ "blastx" => "prot",
16
+ "tblastn" => "nucl",
17
+ "blastp" => "prot"
18
+ }
19
+
20
+ private
21
+
22
+ def initialize(args)
23
+ @tool = args[:fetch_tool]
24
+ @entry = args[:blast_hit_id]
25
+ @hit_display_id = args[:blast_hit_display_id]
26
+ @blast_algo = args[:blast_algo]
27
+ @log_directory = args[:log_directory]
28
+ @tmp_directory = args[:tmp_directory]
29
+ @fetch_database = args[:fetch_database]
30
+ @databases = args[:fetch_database_names]
31
+
32
+ @logger = Quorum::Logger.new(@log_directory)
33
+
34
+ @db = @databases.split(';')
35
+ @db.map! { |d| File.join(@fetch_database, d) }
36
+
37
+ @db_type = DB_TYPE[@blast_algo]
38
+ @db_type ||= 'guess'
39
+ end
40
+
41
+ #
42
+ # Generate the blastdbcmd(s).
43
+ #
44
+ def generate_blast_db_cmds
45
+ @cmds = []
46
+ @db.each do |d|
47
+ blastdbcmd = "blastdbcmd " <<
48
+ "-db '#{d}' " <<
49
+ "-dbtype '#{@db_type}' " <<
50
+ "-entry '#{@entry}' "
51
+ @cmds << blastdbcmd
52
+ end
53
+ end
54
+
55
+ #
56
+ # Parse the blastdbcmd returned sequence(s) and delete if @hit_display_id
57
+ # is not present.
58
+ #
59
+ def parse_and_send_results
60
+ seqs = @seqs.split('>')
61
+ seqs.delete_if { |s| s.empty? || !s.include?(@hit_display_id) }
62
+ if seqs.length != 1
63
+ @logger.log(
64
+ "Quorum::FetchTools::BlastDb#parse_and_send_results",
65
+ "blastdbcmd returned #{seqs.length} sequence(s). Please ensure " <<
66
+ "your Blast database source FASTA headers are unique across ALL " <<
67
+ "databases. See the entry above for details."
68
+ )
69
+ "An error occurred while processing your request."
70
+ else
71
+ ">" << seqs.first
72
+ end
73
+ end
74
+
75
+ public
76
+
77
+ #
78
+ # Execute the blastdbcmd(s) and return the matching sequence.
79
+ #
80
+ # To make Blast execute as quickly as possible, each selected
81
+ # algorithm blasts against all supplied databases at once.
82
+ #
83
+ # See quorum/lib/search_tools/blast.rb for more information.
84
+ #
85
+ # One consequence of this is not knowing which Blast database to use
86
+ # when retrieving a hit sequence via blastdbcmd.
87
+ #
88
+ # See blastdbcmd -help for more information.
89
+ #
90
+ # To work around this issue, simply execute blastdbcmd against all
91
+ # Blast databases and filter on hit_display_id.
92
+ #
93
+ def execute_blast_db_cmd
94
+ generate_blast_db_cmds
95
+ @logger.log("NCBI Blast", @cmds.join('; '))
96
+
97
+ @seqs = ""
98
+ @cmds.each { |c| @seqs << `#{c} 2> /dev/null` }
99
+
100
+ seq = parse_and_send_results
101
+ $stdout.print seq
102
+ end
103
+
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
4
+
5
+ require 'trollop'
6
+ require 'fetch_tools/blast_db'
7
+
8
+ FETCH_TOOLS = {
9
+ "blastdbcmd" => ["blastdbcmd"]
10
+ }
11
+
12
+ module Quorum
13
+ #
14
+ # Parse Options for Quorum Fetch
15
+ #
16
+ class Fetch
17
+
18
+ def initialize
19
+ opts = Trollop::options do
20
+ text <<-HEAD
21
+
22
+ Quorum
23
+
24
+ A flexible bioinformatics search tool.
25
+
26
+ Options:
27
+
28
+ HEAD
29
+
30
+ # Fetch tool
31
+ opt :fetch_tool, "Fetch tool to execute. Available tools: " <<
32
+ "#{FETCH_TOOLS.keys.join(', ')}", :type => :string,
33
+ :required => true, :short => "-f"
34
+
35
+ # General settings
36
+ opt :log_directory, "Path to log directory", :type => :string,
37
+ :required => true, :short => "-l"
38
+ opt :tmp_directory, "Path to tmp directory", :type => :string,
39
+ :required => true, :short => "-m"
40
+
41
+ # Global settings
42
+ opt :fetch_database, "Path to fetch tool database", :type => :string,
43
+ :short => "-d"
44
+ opt :fetch_database_names, "Semicolon delimited database names",
45
+ :type => :string, :short => "-n"
46
+
47
+ # Algorithm specific opts
48
+ opt :blast_hit_id, "Blast hit id", :type => :string, :short => "-b"
49
+ opt :blast_hit_display_id, "Blast hit display id", :type => :string,
50
+ :short => "-s"
51
+ opt :blast_algo, "Blast algorithm", :type => :string, :short => "-a"
52
+ end
53
+
54
+ @args = {} # Contains valid opts.
55
+
56
+ ## Additional opt validation. ##
57
+
58
+ unless FETCH_TOOLS.keys.include?(opts[:fetch_tool].downcase)
59
+ Trollop::die :fetch_tool, "fetch_tool not found\n" <<
60
+ "Available tools: " + FETCH_TOOLS.keys.join(", ")
61
+ end
62
+
63
+ @args[:fetch_tool] = opts[:fetch_tool].downcase
64
+
65
+ unless opts[:fetch_database] && Dir.exists?(opts[:fetch_database])
66
+ Trollop::die :fetch_database, "fetch tool database not found\n" <<
67
+ "Supplied directory: " + opts[:fetch_database]
68
+ end
69
+
70
+ @args[:fetch_database] = opts[:fetch_database]
71
+ @args[:fetch_database_names] = opts[:fetch_database_names]
72
+
73
+ unless Dir.exists?(opts[:log_directory])
74
+ Trollop::die :log_directory, "log directory not found\n" <<
75
+ "Supplied directory: " + opts[:log_directory]
76
+ end
77
+
78
+ @args[:log_directory] = opts[:log_directory]
79
+ @args[:tmp_directory] = opts[:tmp_directory]
80
+ @args[:blast_hit_id] = opts[:blast_hit_id]
81
+ @args[:blast_hit_display_id] = opts[:blast_hit_display_id]
82
+ @args[:blast_algo] = opts[:blast_algo]
83
+
84
+ ## Check System Dependancies ##
85
+
86
+ check_dependencies
87
+
88
+ ## Execute fetch tool ##
89
+
90
+ if @args[:fetch_tool].include? "blastdbcmd"
91
+ blast = Quorum::FetchTools::BlastDb.new(@args)
92
+ blast.execute_blast_db_cmd
93
+ end
94
+ end
95
+
96
+ #
97
+ # Check system dependencies.
98
+ #
99
+ def check_dependencies
100
+ FETCH_TOOLS[@args[:fetch_tool]].each do |f|
101
+ system("which #{f} > /dev/null 2>&1")
102
+ if $?.exitstatus > 0
103
+ Trollop::die "Quorum dependency not found for tool " <<
104
+ "#{@args[:fetch_tool].to_s}. Please add `#{f}` to your PATH."
105
+ end
106
+ end
107
+ end
108
+
109
+ end
110
+ end
111
+
112
+ if __FILE__ == $0
113
+ Quorum::Fetch.new
114
+ end
115
+
@@ -24,7 +24,7 @@ Quorum.blast_remote = blast['remote']
24
24
  Quorum.blast_ssh_host = blast['ssh_host']
25
25
  Quorum.blast_ssh_user = blast['ssh_user']
26
26
  Quorum.blast_ssh_options = blast['ssh_options']
27
- Quorum.blast_script = blast['script']
27
+ Quorum.blast_bin = blast['bin']
28
28
  Quorum.blast_log_dir = blast['log_dir']
29
29
  Quorum.blast_tmp_dir = blast['tmp_dir']
30
30
  Quorum.blast_db = blast['blast_db']
@@ -22,7 +22,7 @@
22
22
  # password: "secret password"
23
23
  # port: 8888
24
24
  #
25
- # script: Absolute path to search script.
25
+ # bin: Absolute path to quorum/bin.
26
26
  #
27
27
  # log_dir: Absolute path to log file directory.
28
28
  #
@@ -72,7 +72,7 @@ development:
72
72
  # Example:
73
73
  # password: "secret password"
74
74
  # port: 8888
75
- script: "%{RAILS_ROOT}/quorum/bin/search"
75
+ bin: "%{RAILS_ROOT}/quorum/bin"
76
76
  log_dir: "%{RAILS_ROOT}/quorum/log"
77
77
  tmp_dir: "%{RAILS_ROOT}/quorum/tmp"
78
78
  blast_db: "%{RAILS_ROOT}/quorum/blastdb"
@@ -103,7 +103,7 @@ test:
103
103
  # Example:
104
104
  # password: "secret password"
105
105
  # port: 8888
106
- script: "%{RAILS_ROOT}/quorum/bin/search"
106
+ bin: "%{RAILS_ROOT}/quorum/bin"
107
107
  log_dir: "%{RAILS_ROOT}/quorum/log"
108
108
  tmp_dir: "%{RAILS_ROOT}/quorum/tmp"
109
109
  blast_db: "%{RAILS_ROOT}/quorum/blastdb"
@@ -134,7 +134,7 @@ production:
134
134
  # Example:
135
135
  # password: "secret password"
136
136
  # port: 8888
137
- script:
137
+ bin:
138
138
  log_dir:
139
139
  tmp_dir:
140
140
  blast_db:
@@ -12,6 +12,76 @@ module Quorum
12
12
  message = I18n.t("#{kind}", options)
13
13
  flash[key] = message if message.present?
14
14
  end
15
-
15
+
16
+ #
17
+ # Colorize console text.
18
+ #
19
+ module Colors
20
+ ## Thanks to the Rspec team for this code! ##
21
+
22
+ #
23
+ # Main color method.
24
+ #
25
+ def color(text, color_code)
26
+ "#{color_code}#{text}\e[0m"
27
+ end
28
+
29
+ #
30
+ # Bold
31
+ #
32
+ def bold(text)
33
+ color(text, "\e[1m")
34
+ end
35
+
36
+ #
37
+ # White
38
+ #
39
+ def white(text)
40
+ color(text, "\e[37m")
41
+ end
42
+
43
+ #
44
+ # Green
45
+ #
46
+ def green(text)
47
+ color(text, "\e[32m")
48
+ end
49
+
50
+ #
51
+ # Red
52
+ #
53
+ def red(text)
54
+ color(text, "\e[31m")
55
+ end
56
+
57
+ #
58
+ # Magenta
59
+ #
60
+ def magenta(text)
61
+ color(text, "\e[35m")
62
+ end
63
+
64
+ #
65
+ # Yellow
66
+ #
67
+ def yellow(text)
68
+ color(text, "\e[33m")
69
+ end
70
+
71
+ #
72
+ # Blue
73
+ #
74
+ def blue(text)
75
+ color(text, "\e[34m")
76
+ end
77
+
78
+ #
79
+ # Grey
80
+ #
81
+ def grey(text)
82
+ color(text, "\e[90m")
83
+ end
84
+ end
85
+
16
86
  end
17
87
  end
@@ -1,3 +1,3 @@
1
1
  module Quorum
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/quorum.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  require "quorum/engine"
2
2
  require "quorum/helpers"
3
3
  require "quorum/sequence"
4
- require "workers/quorum"
5
4
  require "resque"
6
5
  require "resque/server"
6
+ require "resque-result"
7
7
  require "net/ssh"
8
+ require "workers/quorum"
8
9
 
9
10
  module Quorum
10
11
 
@@ -12,9 +13,12 @@ module Quorum
12
13
  BLAST_ALGORITHMS = ["blastn", "blastx", "blastp", "tblastn"]
13
14
 
14
15
  mattr_accessor :blast_remote, :blast_ssh_host, :blast_ssh_user,
15
- :blast_ssh_options, :blast_script, :blast_log_dir, :blast_tmp_dir,
16
+ :blast_ssh_options, :blast_bin, :blast_log_dir, :blast_tmp_dir,
16
17
  :blast_db, :tblastn, :blastp, :blastn, :blastx, :blast_threads
17
18
 
19
+ ## Deprecated ##
20
+ mattr_accessor :blast_script
21
+
18
22
  class << self
19
23
 
20
24
  ## Blast ##
@@ -39,9 +43,9 @@ module Quorum
39
43
  @@blast_ssh_options || {}
40
44
  end
41
45
 
42
- # Blast script path.
43
- def blast_script
44
- @@blast_script || nil
46
+ # Blast bin path.
47
+ def blast_bin
48
+ @@blast_bin || nil
45
49
  end
46
50
 
47
51
  # Blast log dir path.
@@ -84,6 +88,12 @@ module Quorum
84
88
  @@blast_threads || 1
85
89
  end
86
90
 
91
+ ## Blast Deprecated ##
92
+
93
+ def blast_script
94
+ nil
95
+ end
96
+
87
97
  end
88
98
 
89
99
  end
@@ -1,11 +1,13 @@
1
1
  module Workers
2
2
  class System
3
+ extend Resque::Plugins::Result
4
+
3
5
  @queue = :system_queue
4
6
 
5
7
  #
6
8
  # Resque worker method.
7
9
  #
8
- def self.perform(cmd, remote, ssh_host, ssh_user, ssh_options = {})
10
+ def self.perform(meta_id, cmd, remote, ssh_host, ssh_user, ssh_options = {}, stdout = false)
9
11
  unless ssh_options.empty?
10
12
  # Convert each key in ssh_options to a symbol.
11
13
  ssh_options = ssh_options.inject({}) do |memo, (k, v)|
@@ -15,6 +17,7 @@ module Workers
15
17
  end
16
18
 
17
19
  exit_status = 1
20
+ out = ""
18
21
 
19
22
  if remote
20
23
  # Execute command on remote machine.
@@ -24,6 +27,12 @@ module Workers
24
27
  unless success
25
28
  Rails.logger.warn "Channel Net::SSH exec() failed. :'("
26
29
  else
30
+ # Capture STDOUT from ch.exec()
31
+ if stdout
32
+ ch.on_data do |ch, data|
33
+ out = data
34
+ end
35
+ end
27
36
  # Read the exit status of the remote process.
28
37
  ch.on_request("exit-status") do |ch, data|
29
38
  exit_status = data.read_long
@@ -34,12 +43,13 @@ module Workers
34
43
  ssh.loop
35
44
  end
36
45
  else
37
- system(cmd)
46
+ out = `#{cmd}`
38
47
  exit_status = $?.exitstatus
39
48
  end
40
49
  if exit_status > 0
41
50
  raise "Worker failed :'(. See quorum/log/quorum.log for more information."
42
51
  end
52
+ out if stdout
43
53
  end
44
54
  end
45
55
  end
data/quorum.gemspec CHANGED
@@ -19,11 +19,13 @@ Gem::Specification.new do |s|
19
19
  s.add_dependency "jquery-rails"
20
20
  s.add_dependency "net-ssh", "~> 2.2.1"
21
21
  s.add_dependency "resque", "~> 1.19.0"
22
+ s.add_dependency "resque-result", "~> 1.0.1"
22
23
  s.add_dependency "bio-blastxmlparser", "~> 1.0.1"
23
24
 
24
25
  s.add_development_dependency "mysql2"
25
26
  s.add_development_dependency "rspec-rails", "~> 2.6"
26
- s.add_development_dependency "capybara"
27
- s.add_development_dependency "database_cleaner"
27
+ s.add_development_dependency "resque_spec", "~> 0.8.1"
28
+ s.add_development_dependency "capybara", "~> 1.1.1"
29
+ s.add_development_dependency "database_cleaner", "~> 0.6.7"
28
30
  s.add_development_dependency "factory_girl_rails", "~> 1.2.0"
29
31
  end
@@ -1,16 +1,16 @@
1
- TGATAGGATAATTCTAGACAAAACATTAGCCGATCAAGTGTCATCATGGAAAAGCAGCAGGGGCCTTAGTGATACAGTGGTGACTGATCATGCTTGTTCTGGGGAAACATGCTCGTACTACGCAATTGGAGATGTATTTATTTGTGAAAAGACTGGACAAGTTCATGTTTGTGACGAAACATGTAGGGAAGTAGTAATGGATCCCACCAACGAGCTTTTGGTCTGTACAATATCTGGCCACTGTTTTGACAGATTGCTATCACCTGCTGAAATGGAGCCTGATGCTGAGCAGCAGCAAGGTGGTGCGGCAGATGAGGCAGAACCGTTTATGGGATCTGGCCGTTTTGCACGGGCTTATTTGCTGGGATACAATTGTGCTGATGAAAAGGAGCTTGAAGCTACTTTGAGGTTTTGCTGATCCCTATTGGCCCTTCTGGAGTGGATGATCTCATGTCTCAGCATTTACCTATTTAAGATCAAATAAATCGGGTTTCCTTTTCGTGTTTCTCTTGGCATAAGAATGTTTGATTAGATCTAGATTATGAAACTCTAATCGTCTTCTATATTAATAATTGTATGCTTAAATTTATAGTTGAAATTCCATTGATGAATTTTTCTT
2
- CAGAAGACATGTCTTTGACAAAGGTATACCATCTTTTCCNCCAACTTGGTTTGAGACATTTATTTGTTGTACCTCGTCCATCGCGTGTGCTTGGTTTGATAACCAGAAAAGATTTGTTGATTGAGGACACAGATGCGAATACATTAGAGCTTCAGGCAACTAGTAGTTCGGCATCCAGGTAAAAGATTGATGGCAAGGAATGCAGATGTGGAGAGCCCTCTGCTAAATGGTCTTCTGGTTCAGAATCAGATACCTGACTAATACCGTCTGCAGCCTTCCCGAATTCCTTTTTGCGTCCCATTTTCACTTGAAAATCATTCTTTATTATTTTTGTATTAATGTTGAAATAGGTTAGAGAACCCGATATTTTGGGGATGGAACGGGGTTGTAGACTGACAGTATACCCTAGAATTTTGTATATAAAGTATAAACTACAGCAAGCACAGAAAAAAATCATGAAAGCGCCCTTGTGATAATTATGATAGCAGAATTTAGACTGAT
3
- CTCTCTCTCTCTCTCTCTCTCTCTCTCTCCGTCGTCGTTTTGGGTTCTGCGGATCGGTGGATTCTGGTCGCGAATTCCGACGCTGTTCGTGGCGGCGAACCGAATTCCGGTCAACAAGCGAAGAAGATGAAGGTTTTCGTCAAGACTCTGAAGGGCTCTCACTTCGAAATCGAAGTCAAGCCCCAAGACACGGTTTCGGATGTGAAGAAAAATATTGAAACTGTTCAAGGTGGATGTCTATCCTGCCGCGCAGCAAATGCTTATTCATCAAGGGAAAGTTCTTAAGGATGGTACTACCTTGGAGGAAAATAAAGTAGCTGAAAATAGTTTCATTGTGATTATGATTTCCAAGAGTAAGACTCCGTCTGGTGAAGGATCTACTACTTCAGCTGCACCTTCAGCTAAGGCTCCAGCTCCTGCTCCTATATCTTCGGGCACGGCTGTGGAAGGTTCTGATGTCTATGGACAAGCAGCATCCAATCTGGTTGCTGGTAGCAACTTGGAAGACACAATTCAGCAAATTCTTGATGTTGGAGGAGGGACCTGGGATAGGGATACTGTAGTCCGGGCTCTTCGAGCTGCCTTCAACAACCCTGAGAGAGCTATTGAATATTTATATTCAGGAATCCCCGAGCAAGCTGAAGCTCCACCTGTGGGCCGTGTGCCTGCAAGTGCACAACCTGCAAATCCTCCAGCAGCTGCAGCTCCGCAAGCGGCACAACCTGCTCCTGTTACCTCAAGTGGGCCTAATGCTAATCCTTTAGACCTTTTTCCACAGGGCCTCCCAAATGTTGGTTCTGGTGGTGCTGGTGCTGGTGCTGGCTCTTTAGATTTTCTTCGCAACAGCCAACAATTCCAAGCCTTGCGAGCTATGGTGCAGGCTAATCCACAAATATTGCAGCCTATGCTACAAGAGCTTGGCAAACAGAATCCTCATCTAATGAGATTGATTCGAGATCATCAAGCTGACTTCCTTCGCTTGATAAATGAGCCTGTGGAAGGTGGCGAAGGGAACCCATTGGGGCAGCTGGCTGGTGGCATACCACAAGCAATAACTGTCACCCCTGAGGAGCGCCAAGCAATTGAACGTCTTGAAGCAATGGGTTTCGATCGTGCGATTGTATTGGAGGTGTTCTTCGCTTGCAACAAAAATGAGGAATTGGCTGCCAACTACCTTTTAGATCACATGCATGAGTTCGACGAACAATAAATCTCTTCATGTTGCTAAATTATTTATCTGTTATCTTTTTAATGTTTATGGGGCCTTTGTTTTACTAGACGGTTTGATGAGGTAATACTTGAAAATGAAAAAAATCTCAAGTGGAGAAGGAACGTTTTTACCACCTCCACATTATTGCCTTTGTGGACAGTCTCAGTATTCATATACATAGTCGTTTGTCCTGTACTATTGGTATTGTGCATCCTTTTAACATGTGTAATTGTTTAGCTGCGCATCCTATTCTATATTTTCT
4
- CGTTCGCATTGTTCACTCACCATACGCACTTCCATTTTCATCTCCCACCGTCGCATTTTCTTCGGATCTGAAATTCCTCACCATGAATCGCCACCACGATCCCAATCCATTCGACGAAGACGAAGTCAATCCCTTCTCGAACGGTGCTGCTCCTGGATCTAAATCACGTATTCCACCATTGGCATCCGAACCACTGGGCTTTGGTCAAAGACATGATGCTACAGTTGATATTCCTTTGGATACCACAAATGAGCCTAAAAAAAAAGGTCAAGAGCTAGCAGCTTGGGAAGCAGATTTGAAAAGGAGAGAAAAGGATTTAAAAAGAAGAGAGGATGCTGTTTCTAGAGCTGGTGTGCCTGTTGATGATAAGAATTGGCCTCCGATTTTCCCAATTATTCACCATGATATTGCCAATGAGATACCGGTTCATGCTCAGAGGCTGCAATATTTGGCCTTTGCAAGTTGGTTAGGAATTGTTCTCTGCCTTGTTTTTAATGTAGTTGCTGTGATGGTCTGTTGGATCAGAGGCGGTGGTGTTAAAATTTTTTTCCTTGCGGTGATCTATGCTCTACTTGGTGTTCCCCTTTCATATGTGCTTTGGTACAGGCCCCTTTATCGTGCTATGAGGACGGATAGTGCACTGAAGTTTGGCTGGTTTTTCATGTTCTACTTGCTTCATATTGCATTTTGCATCTTTGCTGCAATTGCACCTCCAGTTGTTTTTCATGGGAAATCATTAACGGGCATCCTTGCAGCAACTGACGTCTTCTCAGACCATGTATTGGTTGGGATATTCTATTTGGTTGGATTTGGCCTGTTTTGCTTGGAGTCTCTTCTAAGCTTGTGGGTAATTCAGAAAATATACCTGTTTTTCCGGGGGCATAAGTGAGGCTACTCAGGATTTTGATCCATCGGCTTTTATGATATCAGTCACTTCCCGGCGTGGCTTAGTATATTCTTTCTTTTTGTCTATCCTCTTTTTTCGCTTGCAATATTTTCGTGTGATATTGTTTGTTGTTGTAGTCTAGTTCTTGTTACAGAGCTTAGTGTGTAATTTCCTGTGTAATGAATTCTGTGAAGTTTAGTAATTTTCTAGTGTAACAATAACCAAGCTTTGCTTTCGATAAGCATATATGTAGTGGATTTCCATAAGGAATTATTGTAGTGCTATTGTAGTTGTGAATAGTGACACCCCTCGGAGGTTTTCTATTTGTAAGACAGCACTGATGCAAACACTTTAGTTAAAATTCATGTAGGATCTATTCAATT
5
- CAGGATACACCTCCAGATGGGGAAAATATGACAGGAGCCTCCAAAGAGATGAATGTAGAATCTATTCCTTCCTTCTTTCAAGATATTATTGAGCGTATGGTTTCCTCACAAGTTATGACTGTGAAGCCTGATGCTTGCATTGTGGATTTCTATAATGAGGGCGATCACTCACATCCCTACAATTGGCCACATTGGTATGGAAGGCCTGTCTATATCCTTTCCCTGACAGAATGTGATATGACTTTAGGAAGAGTAATTTCCTCAGACCATCCAGGGGATTACAGGGGCTCTCTGAAGCTTTCTCTTCTCCCTGGGTCTCTTCTGTCAAGGCAAGGGAAATCTACTAATTTTGCTAGATATGCTATTCCTTCTATCCGCAAACAACGCATACTTGTTATTTTTACAAAGTCCCAACCAAAGAAGTCACTGTCAAGTGATGCTCAACGTTTTACCTCATCAGCAGCATCTTCTCATTGGGGTCCACCGCCAAGCCGTTCCCCCAATCACGTTCGTCATCATTTAGGCCACAAGCATTATGCTTCAGCTCCAACAAACGGAGGACTGCCAGCTCCACCAATCCGGCCACA
6
- AAGGACTAGTTGATTTGCTACATGTGTTCTGTGTTGTTCTTGCTTTGGTAAATGTGTCTCTAGTGAAAGCAGAAGATCCATACAAGTTCTACACATGGACAGTGACTTATGGAACTCTTTCTCCTCTGGGCAGTCCTCAACAAGTTATTCTGATCAATGGTCAGTTTCCTGGTCCAAGACTTGACTTGGTAACTAATGACAACGTGATTCTCAACCTCATCAACAAGCTGGATGAGCCATTCTTGCTCACATGGAATGGCATTAAGCAGAGGAAAAATTCTTGGCAAGATGGGGTTTTAGGAACTAACTGTCCCATTCCTCCAAACTCAAATTACACTTACAAGTTTCAGGCCAAGGATCAGATTGGCACTTATACATACTTTCCATCAACTAAGATGCATAAAGCTTCTGGAGGGTTTGGAGCTCTCAATGTTCTTCATAGATCTGTCATCCCAATCCCTTATCCAAACCCTGATGGAGATTTTACATTACTCATTGGTGATTGGTACAAAACTAGCCACAAGACATTAAGCCAAACATTGGATTCTGGGAAATCTCTTGCCTTTCCTGATGGCCTCCTTATCAATGGCCAGGCTCATTCTACCTTCACTGTTAACCAGGGAAAAACCTATATGTTCAGGATCTCAAATGTTGGTCTGTCAACCTCAATTAACTTCAGAATTCAGGGACATACCCTAAAACTAGTTGAGGTTGAAGGATCACACACTATCCAGAACGAATACGACTCGCTTGATGTGCATGTTGGCCAATCAGTTTCTGTGTTAGTAACCTTAAATCAACCTCCAAAGGACTATTACATCGTTGCCTCAACAAGATTTACCAAGACTGTTCTCACTACAACCTCAGTGCTACACTAAAATTCTCAGTCAGCCGCATCAGGATCCTTGCCTGCTCCCCCTGCTGACAAT
7
- ATTGAAATACGTCTTGCAAAAGCTGAAGCTATTAATTGGACATCTCTCGAATATAGCAAGGATATGCCTCCCCAAAAAATTAAAGTGCCTACAATTCAATCTGAAAGGCCTGCATACCCATCATCAAAGCCAAGGACAAAAGATTGGGATAAGTTGGAAGCTATGGTGAAAAAAGAGGAGAAAGAAGAAAAGCTGGATGGTGATGCTGCTTTGAATAAATTGTTCCGTGATATTTATCAAAATGCTGATGAGGACATGCGGAGAGCAATGAGCAAGTCATTTCTGGAGTCAAATGGAACAGTGCTGTCAACGGATTGGAAAGAAGTGGGATCCAAGAAGGTGGAAGGAAGTCCTCCAGAAGGTATGGAATTGAAGAAATGGGAGTACTAATTCAGTACAAGCTGATGCTCATGAGAGTTCAAATTCACAAAAATAAATTCTGAGAAGGGAAACAAATTCTGTAATCTTAATGGTATCGGTTATTTTG
8
- TGAGATCATGCGCGAAATGATGAGGAATACAGACAGAGCCATGAGCAACATTGAGTCTTCTCCTGAGGGATTCAACATGCTGAGGCGCATGTATGAAAATGTTCAAGAACCATTTTTAAATGCCACTACAATGGCTGGTAATACAGGAAATGATGGTGTCAGGAATCAATCAACTAATCCCTCAACGACTAATTCTGAAGCAACTTCCCCTGTTCCAAATACTAACCCACTTCCTAATCCTTGGTCCTCCACTGGAACTGGAGGTGCACAAGGCAACACCAGAAGGACAACTGCTGGTGGGGATGCTCGGCAGCAGGCACTCACTGGACTAGGAGGACTTGGTGTGCCAGATCTTGAAGGCATGATGGGTGGTATGCCAGATCCTGCTATGTTGACCCAATTAATGCAAAATCCAGCTATTTCACAAATGATGCAGAGTATCCTTTCCAATCCACAGACTATGAATCAGATTCTTGGTCTCAATACTGAGCAGCGTGGCATGCCTGATCTAAACTCACTAAGAAGATGTGATGCAAAACCCAGAGTTTCTTCGCTTATTTTCCTCACCTGAGACACTGCAGCAACTCATGTCTTTCCAGCAATCTCTTATGTCTCAAGTTGG
9
- CAGCTCTATTCTCCACCAACACAAAAACGCTCACAAACTAGCTTCTTTGGAGAAAACATTAGAGACAATAGTGGCGGTGGTGGGAACAATGGCAGCCTCACTACAAGCAGCAGCTACTTTCATGCAACCAACCAAGTTTGGTCGCACCAACACTTTGCAGCTGAAATCTACTCAATCCATTTCTAAGGCTTTTGGGTTGGAGCCCTCTGCAGCTAAGGTCTCATGTTCCCTTCAGGCTGATTTCAAGGAGTTGGCTCACAAGTGTGTTGAAGCTACCAAGATTGCTGGGTTTGCTCTTGCCACCTCTGCTCTAGTTGTCTCTGGAGCAAGTGCGGAAGGTGCTCCGAAGAGGCTAACCTTCGATGAAATCCAGAGCAAGACATACATGGAAGTGAAGGGAACCGGAACCGCAAACCAGTGCCCCACCATTGAAGGGGGAGTGGAATCATTTTCCTTCAAGGCCGGGAAGTACAATGCCAAGAAGTTCTGCCTTGAACCCACTTCATTCACAGTGAAGGCAGAGGGAGTAGCCAAGAACGCCCCACTTGAGTTCCAAAACACCAAGCTCATGACACGTCTGACCTACACCCTCGACGAGATCGAAGGACCCTTTGAGGTTTCCTCTGATGGCACTGTCAAGTTCGAGGAGAAAGATGGCATTGACTACGCTGCTGTCACAGTTCAGCTTCCCGGTGGCGAGCGTGTTCCATTCCTTTTCACCATCAAACAGTTGGTAGCATCTGGGAAGCCAGACAGCTTCAGTGGGGAGTTTCTAGTGCCTTCATACCGTGGATCTTCCTTCTTGGACCCCAAGGGAAGAGGTGCGTCAACTGGTTATGACAATGCTGTCGCATTGCCTGCTGGTGGCAGAGGAGATGAGGAAGAACTTGCTAAGGAGAACAACCAGAGTGCTTCTTCATCCCAAGGGAAGATCACCTTGAGCGTGACACAGAGCAAGCCTGATACCGGTGAGGTGATTGGTGTGTTCGAGAGCATTCAGCCGTCCGACACTGATTTGGGAGCGAAAGCTCCCAAGGATGTGAAGATCCAGGGAGTTTGGTATGCTCAGCTCGAGTCATAGACAGCTTTATCTCTCTTCTGCTTTATTTTGTATTTTGTTGTAACTTCTCAGTGTTGCTGCCATTACCTTTGACACCACTGTCCCAGCATGAGAGTGTTATCCTTGTTTGTATGTATACTATCGACTTTCAATTATAATGCTCGAAAATGTCCAAGGTTT
10
- AGCAGTGTTCCCATGAAACCTTCCCACTGAGTCAACTCACTCTGTACATAAAACCCTCTTCATCATCATCATGGCTTCTCAAGTTTTTCTTCAGCAAGGGTTGTTACTGTTTGCCCCAAACCAATGTTCTCCAACCAAGCTCGGTGTATCTTCTTGCCTCGGTTCTCGTAACTTTCCGTTGATTTCCTCCACCTCAATTTCATGGCGTTGCAACAACCCTCTCTCTGCCAAACCCTCTTTTGTTGTCAGAGCTGACTCCAATGTCGACGCTGCTTCCGACAATGCTGGTGAAGTTCCAGAAGCTGAAGGTAGCGTTGATCAGGTTCCTGAAGATGGAGAAGCAGAACTAGCTTCGGATTCTGAGGTGGAGCAACCCAAGCCCCCTAGAAAGCAACGAGTCAAGCTTGGAGATGTTATGGGGATATTGAATCAGAGGGCAATTGAGGCATCGGAAAGCATGAGGCCGACTCCAGAAATTAGGACTGGAGATGTTGTGGAAATCAAACTGGAAGTTCCTGAGAACAAGCGTAGGTTGTCTATTTATAAAGGTATAGTCATCTCAAGACAAAATGCTGGTATTCACACAACTATTCGAATCCGAAGGATTATTGCTGGCACAGGGGTTGAGATTGTCTTCCCAATTTACTCACCAAACATCAAAGAAATCAAAGTGGTAAACCACCGTAAAGTCAGAAGAGCAAGATTGTACTATTTAAGAGACAAGCTTCCCAGATTCTCCACTTTCAAATGATACGGTTACCACTTCTCATCCTGATCTTCTTCAAAGTAGTTGCTGATATTGCAGGGCCATATTTTGGTTATTTCGTTTTGTTGTGTTGTAGAATATATCATTTTTCTTCCTCTAAATCTATCCTCCGAGAATTGGAAACAAGTGTATGTATGTTGCCCTTGATAATATTTGAAATTTGAAGTGTTCTCCCTTGCATTCCTTGGTATAGGATAGAAAGCCAAGCTCCTAAACAAACATTACTAAATATGACAGTCTAAGGAATGAGCATGTGTATCGATACCAGTTAAGTGCATTGTGAATGTATTTTTTTTTTTTATCTCTATCCATAAAAAAAGGTATGTTCATTCTTG
11
- AAGAAACAAGAGAGAGAAGATGATTTAGATGAGCCAAAAACAAAGGAAAAACGGCAAAAGGGAGAGAAAGGAAAATCTCCATCAGGTTTTCTTGCTCCTCTCCAGCTATCTGATGCCCTTGTAAACTTCCTTGGTACTGGAGAAAGTGAATTATCAAGATCTGATGTCATAAAAAGAATGTGGGAATACATAAAAGGAAACGACCTTCAGGATCCTTCTGACAAGAGGAAAATATTATGCGACGACAAGCTGAAAGAACTCTTTGATGTGGACTCCTTTAACGGCTTCACCGTTACAAAACTGTTGACTCCTCATTTTATAAAGGCAGAGCAGTGAGTTGCTTGTGGAAATCGGTAATGTTGTCCAATTAGGTTTGGAAGGTCCTTCTTTTGTGGCCTTTTGGCATTGTCTGCCAACACGAGGAATAGGAATTAGGAACATGACAGATTTTCAGTAAATTTTTCTCCAAGAATTTAATGTTACGTGACCATTACTTTGTTTTTTTTAATATCACGTTTTGTCACTTGGCAGTTGAAATTTTTGTATATTTTCAGTTCCTGAAGCTGCAAGGATAATGCTGACTTCTTACTCTACTCTGCATTTGCTCATATGAGGCACTACACATATCCATAATACATGAATAAATTTGCAGTATTGAA
12
- CATTTGTTCCATTTGCTCAGGCATTTGCAGCTGTACTTACAGCTGTCCTTACTGGTTCTCTCTATTATGTGGCTGCCTCTCCTAAAGATCCTACTTATATTGTGGCACCTGTTTTACAGTCTCGCTCTGGTCGTCAAGATTTGAAAAAGCTATTTGAAGCCTGGTATGAGAAACGGCAAATGAAAAAAATATATTCACCACTTCTGGAAGGACTACTAGCTCTCTACCTAGGATTTGAGTGGATCCAAACGAATAACATTCTTGCTCCCATTATCACACATGGCATATACTCCACAGTTATATTGGGACATGGCCTTTGGAAGATAAACGACCACCGGCGAAGACTACGTCAAAGAATCCAACAGCTCAAATCTGAAGAACAAAATTCCCAGTAGACTTTGAAATACCTTCCATGTCTGGCTGTGATACAAAAAATGTATATGTATGTATTAGAGCTGCTAATTATGTAAAGAGAAAAGATGTATATACTTGTGTTAGCTGAGGTCTCGTACACACTGAATATTCAGGTTTTGTTCACCATTTTCTAATTTCGAGTTACTATATGTAGTGTTTTCTAATAAAATGAAATAAAATCCCCAAGTTGGGTTGATTTAAATT
13
- GAGACCTGTTATGATTCACAGAGCCATTCTAGGATCTGTTGAGCGCATGTTTGCCATTCTTTTAGAGCACTACAAGGGTAAATGGCCCTTGTGGCTCAGTCCTCGTCAAGCAATTGTATGTCCTGTGTCAGAGAAATCACAAGCTTATGCACTGCAGGTGCGAGATCAGATCCACCAAGCAGGATATCACGTTGATGCTGATACAACTGATCGGAAGATTCAGAAGAAGGTACGGGAAGCTCAATTAGCGCAGTACAACTACATCTTGGTTGTTGGAGAGGAGGAAGCTAATACAGGACAGGTGAGTGTACGGGTTAGAGATAAAGCAGACCATAGCGTTATGAGTATTGAGAATCTACTCAAACACTTCAGCGACGAAGTTGCAGCTTTTCATTGATACTTCTCTTGTGAAAACTGTTGGAAGCAAATTTTACCCCCACTCACCTAGTTTGTTCACACTTTGTGTGCATTATTTATATTTTCAGCCTGACAATTTACATTTAGATGATTTGGGTAATGACTGTATTTTCTATGTGAATTTTGGAGCGCACTGATATCGATCCATTGTTTGAAAAGCTGAGAGAAAGTGTAATCTTTTATTTTCTGTCTACATTTTAATTATGTTTTTCGTTAGTTTTTTCCTTTTATATATTTGTTTGTTAAATTGAAGGAAACTATTGTTGG
14
- GGCACCAGGGATCTTACAAGGCTGGATCTCCATAATAACAAGTTGACAGGGCCTATTCCTCCTCAAATTGGACGGTTGAAGCGTCTTAAAATACTCAATTTGAGGTGGAACAAACTACAGGATGCAATTCCTCCAGAAATTGGCGAGCTTAAAAGTTTAACACATCTGTACCTAAGCTTCAATAGTTTCAAGGGAGAAATTCCCAAAGAGCTAGCAAATCTTCCAGACCTTCGCTACCTTTATCTTCATGAAAACCGTTTAATTGGTAGGATACCACCTGAGTTGGGCACTCTACAAAACCTTCGGCACTTGGATGCTGGTAACAATCATTTGGTGGGTACCATAAGGGAACTCATTCGTATTGAAGGTTGCTTTCCAGCACTCCGCAATCTATATCTAAACAATAATTATTTTACTGGAGGAATGCCTGCACAACTTGCCAACTTATCCAGTCTTGAGATCTTGTACCTGTCCTACAATAAAATGTCAGGAGTTATACCATCTAGCCTTGCTCATATTCCTAAATTGACATACTTGTACTTGGATCACAATCAGTTTTCGGGGAGAATTCCCGAACCCTTTTACAAACATTCATTTTTGAAAGAAATGTACATCGAGGGAAATGCATTCCGGCCTGGTGTTAAACCCATTGGTTTCCATAAAGTGCTTGAAGTTTCTGATTCAGACTTCCTTGTTTAATGAAACTCAACATATTTAGTTTTTTAGGAAGTTTACGTGTATAATTAATGAAACAATAGCTCCTCTGATTTTCTCAATGAAAATTGCTATATGGGTAATTCAATTTTTGTCACGGCTGTCTTGTCAGAAGAATCAATAAATAATAGTGTTTTTTAACTCT
15
- GGAAATGAGCACAATGTTAAGCAGATCAAGAATTACCGCCAAAAGGTTGAGGAGGAACTCTCCAAAATTTGTGGTGACATCCTGACTATTATAGACCAGCATCTAATTCCTTCTTCCGCCTCAGCAGAAGCTAGTGTTTTCTACTATAAGATGAAAGGTGATTATTATCGGTATCTTGCTGAGTTCAAGACCGACCAAGAAAGGAAAGAGGCAGCCGAGCAGTCACTCAAGGGATATGAGGCTGCTTCAGCCACTGCCAACACCGATCTTCCATCAACACATCCAATCCGTCTTGGACTTGCTCTCAACTTCTCTGTCTTTTATTACGAGATCATGAACTCTCCTGAAAGGGCCTGCCATTTGGCTAAACAAGCTTTTGATGAGGCAATTGCAGAGTTGGACACCTTGAGTGAAGAGTCATACAAGGACAGTACTTTGATCATGCAGTTGTTGAGAGACAACCTGACTCTCTGGACATCCGATTTGCCAGAAGATGGAGGCGAGGAGAACATAAAAGCTGAAGAAGCCAAACCTACTGAGCCTGAGAATTAACTAGGTTCTTTTGGATCTTTGGCCCTGATTCAATAGTCAGATTTTTGTGGTGCTCTGCAAAGAGGGCATTTTTCAGCTTTTCTTGCAATGGATTTGGAATGGACAATATGAGCTGTCGCCACTTCATAATTACCAACCAAAGCCAAAAGATCTGAGCCTGCCTTTTCTTTATTTCTTTAAATTGTTTTTCTTTCTTACTGCCTTTATCTATTTTAAGCAAAGTGGTCGGTTGAAACAATGGATAATTCACATTTAAATCATAAGAATCTTTTTCAAGTGTTCATTACATCCGTTTTGGTTCGTTTAAAATATTGTTTCCTATGCGCTCCTAGATGGGATACAGTACAAGTATTCAACTGTTGAGCAGAGATTTTTACCTCAAAAAATTAGT
16
- AGACACAACATCATAGAAACAGATCAACAACACATTAAAATTAGCATGGATCATAGCTTACGTTGTTTTGGGTCGACACTACCCAAAACTCTTCTTCAGTTTCTGTTATCACCTTCACTCCTTCTCTTCATCTCCTTCTTCAGTTTCTCCAACGCAGCCTTCGACCTCGCCACCATACCCTTCAACGATGCCTATTCACCCCTCTTTGGGGATGGCAACCTTGTCCGCTCCGCCGATGGCAACGGTGTTCAACTCCTCCTCGATCGCTTCACCGGTTCTGGTTTCGTTTCTTCCAATATGTACCAGCATGGATTCTTCAGCGCCAATATCAAGCTACCATCGAATTACAGCGCTGGTATTTGCGTGGCCTTTTATACATCAAACAATGAGATGTTTGAGAAGACACACGATGAGTTAGACTTTGAATTCTTAGGTAATATAGCCGGAAAGCCTTGGAGGTTTCAGACAAACTTGTACGGCAATGGCAGCACCAACCGTGGCCGTGAGGAGCGGTACCGCCTCTGGTTTGATCCAACCAAGGGATTCCATAGATACAGCATTCTATGGACAGCTAAGAACATCATATTTTACATAGATGAGGTTCCAATTAGAGAAATTATAAGAAGTGAAGAAATGGGAGCTGATTACCCAGCAAAGCCAATGGCATTATACGCCACAATATGGGATGCATCAAATTGGGCCACATCGGGTGGAAA
1
+ TGATAGGATAATTCTAGACAAAACATTAGCCGATCAAGTGTCATCATGGAAAAGCAGCAGGGGCCTTAGTGATACAGTGGTGACTGATCATGCTTGTTCTGGGGAAACATGCTCGTACTACGCAATTGGAGATGTATTTATTTGTGAAAAGACTGGACAAGTTCATGTTTGTGACGAAACATGTAGGGAAGTAGTAATGGATCCCACCAACGAGCTTTTGGTCTGTACAATATCTGGCCACTGTTTTGACAGATTGCTATCACCTGCTGAAATGGAGCCTGATGCTGAGCAGCAGCAAGGTGGTGCGGCAGATGAGGCAGAACCGTTTATGGGATCTGGCCGTTTTGCACGGGCTTATTTGCTGGGATACAATTGTGCTGATGAAAAGGAGCTTGAAGCTACTTTGAGGTTTTGCTGATCCCTATTGGCCCTTCTGGAGTGGATGATCTCATGTCTCAGCATTTACCTATTTAAGATCAAATAAATCGGGTTTCCTTTTCGTGTTTCTCTTGGCATAAGAATGTTTGATTAGATCTAGATTATGAAACTCTAATCGTCTTCTATATTAATAATTGTATGCTTAAATTTATAGTTGAAATTCCATTGATGAATTTTTCTT
2
+ CAGAAGACATGTCTTTGACAAAGGTATACCATCTTTTCCNCCAACTTGGTTTGAGACATTTATTTGTTGTACCTCGTCCATCGCGTGTGCTTGGTTTGATAACCAGAAAAGATTTGTTGATTGAGGACACAGATGCGAATACATTAGAGCTTCAGGCAACTAGTAGTTCGGCATCCAGGTAAAAGATTGATGGCAAGGAATGCAGATGTGGAGAGCCCTCTGCTAAATGGTCTTCTGGTTCAGAATCAGATACCTGACTAATACCGTCTGCAGCCTTCCCGAATTCCTTTTTGCGTCCCATTTTCACTTGAAAATCATTCTTTATTATTTTTGTATTAATGTTGAAATAGGTTAGAGAACCCGATATTTTGGGGATGGAACGGGGTTGTAGACTGACAGTATACCCTAGAATTTTGTATATAAAGTATAAACTACAGCAAGCACAGAAAAAAATCATGAAAGCGCCCTTGTGATAATTATGATAGCAGAATTTAGACTGAT
3
+ CTCTCTCTCTCTCTCTCTCTCTCTCTCTCCGTCGTCGTTTTGGGTTCTGCGGATCGGTGGATTCTGGTCGCGAATTCCGACGCTGTTCGTGGCGGCGAACCGAATTCCGGTCAACAAGCGAAGAAGATGAAGGTTTTCGTCAAGACTCTGAAGGGCTCTCACTTCGAAATCGAAGTCAAGCCCCAAGACACGGTTTCGGATGTGAAGAAAAATATTGAAACTGTTCAAGGTGGATGTCTATCCTGCCGCGCAGCAAATGCTTATTCATCAAGGGAAAGTTCTTAAGGATGGTACTACCTTGGAGGAAAATAAAGTAGCTGAAAATAGTTTCATTGTGATTATGATTTCCAAGAGTAAGACTCCGTCTGGTGAAGGATCTACTACTTCAGCTGCACCTTCAGCTAAGGCTCCAGCTCCTGCTCCTATATCTTCGGGCACGGCTGTGGAAGGTTCTGATGTCTATGGACAAGCAGCATCCAATCTGGTTGCTGGTAGCAACTTGGAAGACACAATTCAGCAAATTCTTGATGTTGGAGGAGGGACCTGGGATAGGGATACTGTAGTCCGGGCTCTTCGAGCTGCCTTCAACAACCCTGAGAGAGCTATTGAATATTTATATTCAGGAATCCCCGAGCAAGCTGAAGCTCCACCTGTGGGCCGTGTGCCTGCAAGTGCACAACCTGCAAATCCTCCAGCAGCTGCAGCTCCGCAAGCGGCACAACCTGCTCCTGTTACCTCAAGTGGGCCTAATGCTAATCCTTTAGACCTTTTTCCACAGGGCCTCCCAAATGTTGGTTCTGGTGGTGCTGGTGCTGGTGCTGGCTCTTTAGATTTTCTTCGCAACAGCCAACAATTCCAAGCCTTGCGAGCTATGGTGCAGGCTAATCCACAAATATTGCAGCCTATGCTACAAGAGCTTGGCAAACAGAATCCTCATCTAATGAGATTGATTCGAGATCATCAAGCTGACTTCCTTCGCTTGATAAATGAGCCTGTGGAAGGTGGCGAAGGGAACCCATTGGGGCAGCTGGCTGGTGGCATACCACAAGCAATAACTGTCACCCCTGAGGAGCGCCAAGCAATTGAACGTCTTGAAGCAATGGGTTTCGATCGTGCGATTGTATTGGAGGTGTTCTTCGCTTGCAACAAAAATGAGGAATTGGCTGCCAACTACCTTTTAGATCACATGCATGAGTTCGACGAACAATAAATCTCTTCATGTTGCTAAATTATTTATCTGTTATCTTTTTAATGTTTATGGGGCCTTTGTTTTACTAGACGGTTTGATGAGGTAATACTTGAAAATGAAAAAAATCTCAAGTGGAGAAGGAACGTTTTTACCACCTCCACATTATTGCCTTTGTGGACAGTCTCAGTATTCATATACATAGTCGTTTGTCCTGTACTATTGGTATTGTGCATCCTTTTAACATGTGTAATTGTTTAGCTGCGCATCCTATTCTATATTTTCT
4
+ CGTTCGCATTGTTCACTCACCATACGCACTTCCATTTTCATCTCCCACCGTCGCATTTTCTTCGGATCTGAAATTCCTCACCATGAATCGCCACCACGATCCCAATCCATTCGACGAAGACGAAGTCAATCCCTTCTCGAACGGTGCTGCTCCTGGATCTAAATCACGTATTCCACCATTGGCATCCGAACCACTGGGCTTTGGTCAAAGACATGATGCTACAGTTGATATTCCTTTGGATACCACAAATGAGCCTAAAAAAAAAGGTCAAGAGCTAGCAGCTTGGGAAGCAGATTTGAAAAGGAGAGAAAAGGATTTAAAAAGAAGAGAGGATGCTGTTTCTAGAGCTGGTGTGCCTGTTGATGATAAGAATTGGCCTCCGATTTTCCCAATTATTCACCATGATATTGCCAATGAGATACCGGTTCATGCTCAGAGGCTGCAATATTTGGCCTTTGCAAGTTGGTTAGGAATTGTTCTCTGCCTTGTTTTTAATGTAGTTGCTGTGATGGTCTGTTGGATCAGAGGCGGTGGTGTTAAAATTTTTTTCCTTGCGGTGATCTATGCTCTACTTGGTGTTCCCCTTTCATATGTGCTTTGGTACAGGCCCCTTTATCGTGCTATGAGGACGGATAGTGCACTGAAGTTTGGCTGGTTTTTCATGTTCTACTTGCTTCATATTGCATTTTGCATCTTTGCTGCAATTGCACCTCCAGTTGTTTTTCATGGGAAATCATTAACGGGCATCCTTGCAGCAACTGACGTCTTCTCAGACCATGTATTGGTTGGGATATTCTATTTGGTTGGATTTGGCCTGTTTTGCTTGGAGTCTCTTCTAAGCTTGTGGGTAATTCAGAAAATATACCTGTTTTTCCGGGGGCATAAGTGAGGCTACTCAGGATTTTGATCCATCGGCTTTTATGATATCAGTCACTTCCCGGCGTGGCTTAGTATATTCTTTCTTTTTGTCTATCCTCTTTTTTCGCTTGCAATATTTTCGTGTGATATTGTTTGTTGTTGTAGTCTAGTTCTTGTTACAGAGCTTAGTGTGTAATTTCCTGTGTAATGAATTCTGTGAAGTTTAGTAATTTTCTAGTGTAACAATAACCAAGCTTTGCTTTCGATAAGCATATATGTAGTGGATTTCCATAAGGAATTATTGTAGTGCTATTGTAGTTGTGAATAGTGACACCCCTCGGAGGTTTTCTATTTGTAAGACAGCACTGATGCAAACACTTTAGTTAAAATTCATGTAGGATCTATTCAATT
5
+ CAGGATACACCTCCAGATGGGGAAAATATGACAGGAGCCTCCAAAGAGATGAATGTAGAATCTATTCCTTCCTTCTTTCAAGATATTATTGAGCGTATGGTTTCCTCACAAGTTATGACTGTGAAGCCTGATGCTTGCATTGTGGATTTCTATAATGAGGGCGATCACTCACATCCCTACAATTGGCCACATTGGTATGGAAGGCCTGTCTATATCCTTTCCCTGACAGAATGTGATATGACTTTAGGAAGAGTAATTTCCTCAGACCATCCAGGGGATTACAGGGGCTCTCTGAAGCTTTCTCTTCTCCCTGGGTCTCTTCTGTCAAGGCAAGGGAAATCTACTAATTTTGCTAGATATGCTATTCCTTCTATCCGCAAACAACGCATACTTGTTATTTTTACAAAGTCCCAACCAAAGAAGTCACTGTCAAGTGATGCTCAACGTTTTACCTCATCAGCAGCATCTTCTCATTGGGGTCCACCGCCAAGCCGTTCCCCCAATCACGTTCGTCATCATTTAGGCCACAAGCATTATGCTTCAGCTCCAACAAACGGAGGACTGCCAGCTCCACCAATCCGGCCACA
6
+ AAGGACTAGTTGATTTGCTACATGTGTTCTGTGTTGTTCTTGCTTTGGTAAATGTGTCTCTAGTGAAAGCAGAAGATCCATACAAGTTCTACACATGGACAGTGACTTATGGAACTCTTTCTCCTCTGGGCAGTCCTCAACAAGTTATTCTGATCAATGGTCAGTTTCCTGGTCCAAGACTTGACTTGGTAACTAATGACAACGTGATTCTCAACCTCATCAACAAGCTGGATGAGCCATTCTTGCTCACATGGAATGGCATTAAGCAGAGGAAAAATTCTTGGCAAGATGGGGTTTTAGGAACTAACTGTCCCATTCCTCCAAACTCAAATTACACTTACAAGTTTCAGGCCAAGGATCAGATTGGCACTTATACATACTTTCCATCAACTAAGATGCATAAAGCTTCTGGAGGGTTTGGAGCTCTCAATGTTCTTCATAGATCTGTCATCCCAATCCCTTATCCAAACCCTGATGGAGATTTTACATTACTCATTGGTGATTGGTACAAAACTAGCCACAAGACATTAAGCCAAACATTGGATTCTGGGAAATCTCTTGCCTTTCCTGATGGCCTCCTTATCAATGGCCAGGCTCATTCTACCTTCACTGTTAACCAGGGAAAAACCTATATGTTCAGGATCTCAAATGTTGGTCTGTCAACCTCAATTAACTTCAGAATTCAGGGACATACCCTAAAACTAGTTGAGGTTGAAGGATCACACACTATCCAGAACGAATACGACTCGCTTGATGTGCATGTTGGCCAATCAGTTTCTGTGTTAGTAACCTTAAATCAACCTCCAAAGGACTATTACATCGTTGCCTCAACAAGATTTACCAAGACTGTTCTCACTACAACCTCAGTGCTACACTAAAATTCTCAGTCAGCCGCATCAGGATCCTTGCCTGCTCCCCCTGCTGACAAT
7
+ ATTGAAATACGTCTTGCAAAAGCTGAAGCTATTAATTGGACATCTCTCGAATATAGCAAGGATATGCCTCCCCAAAAAATTAAAGTGCCTACAATTCAATCTGAAAGGCCTGCATACCCATCATCAAAGCCAAGGACAAAAGATTGGGATAAGTTGGAAGCTATGGTGAAAAAAGAGGAGAAAGAAGAAAAGCTGGATGGTGATGCTGCTTTGAATAAATTGTTCCGTGATATTTATCAAAATGCTGATGAGGACATGCGGAGAGCAATGAGCAAGTCATTTCTGGAGTCAAATGGAACAGTGCTGTCAACGGATTGGAAAGAAGTGGGATCCAAGAAGGTGGAAGGAAGTCCTCCAGAAGGTATGGAATTGAAGAAATGGGAGTACTAATTCAGTACAAGCTGATGCTCATGAGAGTTCAAATTCACAAAAATAAATTCTGAGAAGGGAAACAAATTCTGTAATCTTAATGGTATCGGTTATTTTG
8
+ TGAGATCATGCGCGAAATGATGAGGAATACAGACAGAGCCATGAGCAACATTGAGTCTTCTCCTGAGGGATTCAACATGCTGAGGCGCATGTATGAAAATGTTCAAGAACCATTTTTAAATGCCACTACAATGGCTGGTAATACAGGAAATGATGGTGTCAGGAATCAATCAACTAATCCCTCAACGACTAATTCTGAAGCAACTTCCCCTGTTCCAAATACTAACCCACTTCCTAATCCTTGGTCCTCCACTGGAACTGGAGGTGCACAAGGCAACACCAGAAGGACAACTGCTGGTGGGGATGCTCGGCAGCAGGCACTCACTGGACTAGGAGGACTTGGTGTGCCAGATCTTGAAGGCATGATGGGTGGTATGCCAGATCCTGCTATGTTGACCCAATTAATGCAAAATCCAGCTATTTCACAAATGATGCAGAGTATCCTTTCCAATCCACAGACTATGAATCAGATTCTTGGTCTCAATACTGAGCAGCGTGGCATGCCTGATCTAAACTCACTAAGAAGATGTGATGCAAAACCCAGAGTTTCTTCGCTTATTTTCCTCACCTGAGACACTGCAGCAACTCATGTCTTTCCAGCAATCTCTTATGTCTCAAGTTGG
9
+ CAGCTCTATTCTCCACCAACACAAAAACGCTCACAAACTAGCTTCTTTGGAGAAAACATTAGAGACAATAGTGGCGGTGGTGGGAACAATGGCAGCCTCACTACAAGCAGCAGCTACTTTCATGCAACCAACCAAGTTTGGTCGCACCAACACTTTGCAGCTGAAATCTACTCAATCCATTTCTAAGGCTTTTGGGTTGGAGCCCTCTGCAGCTAAGGTCTCATGTTCCCTTCAGGCTGATTTCAAGGAGTTGGCTCACAAGTGTGTTGAAGCTACCAAGATTGCTGGGTTTGCTCTTGCCACCTCTGCTCTAGTTGTCTCTGGAGCAAGTGCGGAAGGTGCTCCGAAGAGGCTAACCTTCGATGAAATCCAGAGCAAGACATACATGGAAGTGAAGGGAACCGGAACCGCAAACCAGTGCCCCACCATTGAAGGGGGAGTGGAATCATTTTCCTTCAAGGCCGGGAAGTACAATGCCAAGAAGTTCTGCCTTGAACCCACTTCATTCACAGTGAAGGCAGAGGGAGTAGCCAAGAACGCCCCACTTGAGTTCCAAAACACCAAGCTCATGACACGTCTGACCTACACCCTCGACGAGATCGAAGGACCCTTTGAGGTTTCCTCTGATGGCACTGTCAAGTTCGAGGAGAAAGATGGCATTGACTACGCTGCTGTCACAGTTCAGCTTCCCGGTGGCGAGCGTGTTCCATTCCTTTTCACCATCAAACAGTTGGTAGCATCTGGGAAGCCAGACAGCTTCAGTGGGGAGTTTCTAGTGCCTTCATACCGTGGATCTTCCTTCTTGGACCCCAAGGGAAGAGGTGCGTCAACTGGTTATGACAATGCTGTCGCATTGCCTGCTGGTGGCAGAGGAGATGAGGAAGAACTTGCTAAGGAGAACAACCAGAGTGCTTCTTCATCCCAAGGGAAGATCACCTTGAGCGTGACACAGAGCAAGCCTGATACCGGTGAGGTGATTGGTGTGTTCGAGAGCATTCAGCCGTCCGACACTGATTTGGGAGCGAAAGCTCCCAAGGATGTGAAGATCCAGGGAGTTTGGTATGCTCAGCTCGAGTCATAGACAGCTTTATCTCTCTTCTGCTTTATTTTGTATTTTGTTGTAACTTCTCAGTGTTGCTGCCATTACCTTTGACACCACTGTCCCAGCATGAGAGTGTTATCCTTGTTTGTATGTATACTATCGACTTTCAATTATAATGCTCGAAAATGTCCAAGGTTT
10
+ AGCAGTGTTCCCATGAAACCTTCCCACTGAGTCAACTCACTCTGTACATAAAACCCTCTTCATCATCATCATGGCTTCTCAAGTTTTTCTTCAGCAAGGGTTGTTACTGTTTGCCCCAAACCAATGTTCTCCAACCAAGCTCGGTGTATCTTCTTGCCTCGGTTCTCGTAACTTTCCGTTGATTTCCTCCACCTCAATTTCATGGCGTTGCAACAACCCTCTCTCTGCCAAACCCTCTTTTGTTGTCAGAGCTGACTCCAATGTCGACGCTGCTTCCGACAATGCTGGTGAAGTTCCAGAAGCTGAAGGTAGCGTTGATCAGGTTCCTGAAGATGGAGAAGCAGAACTAGCTTCGGATTCTGAGGTGGAGCAACCCAAGCCCCCTAGAAAGCAACGAGTCAAGCTTGGAGATGTTATGGGGATATTGAATCAGAGGGCAATTGAGGCATCGGAAAGCATGAGGCCGACTCCAGAAATTAGGACTGGAGATGTTGTGGAAATCAAACTGGAAGTTCCTGAGAACAAGCGTAGGTTGTCTATTTATAAAGGTATAGTCATCTCAAGACAAAATGCTGGTATTCACACAACTATTCGAATCCGAAGGATTATTGCTGGCACAGGGGTTGAGATTGTCTTCCCAATTTACTCACCAAACATCAAAGAAATCAAAGTGGTAAACCACCGTAAAGTCAGAAGAGCAAGATTGTACTATTTAAGAGACAAGCTTCCCAGATTCTCCACTTTCAAATGATACGGTTACCACTTCTCATCCTGATCTTCTTCAAAGTAGTTGCTGATATTGCAGGGCCATATTTTGGTTATTTCGTTTTGTTGTGTTGTAGAATATATCATTTTTCTTCCTCTAAATCTATCCTCCGAGAATTGGAAACAAGTGTATGTATGTTGCCCTTGATAATATTTGAAATTTGAAGTGTTCTCCCTTGCATTCCTTGGTATAGGATAGAAAGCCAAGCTCCTAAACAAACATTACTAAATATGACAGTCTAAGGAATGAGCATGTGTATCGATACCAGTTAAGTGCATTGTGAATGTATTTTTTTTTTTTATCTCTATCCATAAAAAAAGGTATGTTCATTCTTG
11
+ AAGAAACAAGAGAGAGAAGATGATTTAGATGAGCCAAAAACAAAGGAAAAACGGCAAAAGGGAGAGAAAGGAAAATCTCCATCAGGTTTTCTTGCTCCTCTCCAGCTATCTGATGCCCTTGTAAACTTCCTTGGTACTGGAGAAAGTGAATTATCAAGATCTGATGTCATAAAAAGAATGTGGGAATACATAAAAGGAAACGACCTTCAGGATCCTTCTGACAAGAGGAAAATATTATGCGACGACAAGCTGAAAGAACTCTTTGATGTGGACTCCTTTAACGGCTTCACCGTTACAAAACTGTTGACTCCTCATTTTATAAAGGCAGAGCAGTGAGTTGCTTGTGGAAATCGGTAATGTTGTCCAATTAGGTTTGGAAGGTCCTTCTTTTGTGGCCTTTTGGCATTGTCTGCCAACACGAGGAATAGGAATTAGGAACATGACAGATTTTCAGTAAATTTTTCTCCAAGAATTTAATGTTACGTGACCATTACTTTGTTTTTTTTAATATCACGTTTTGTCACTTGGCAGTTGAAATTTTTGTATATTTTCAGTTCCTGAAGCTGCAAGGATAATGCTGACTTCTTACTCTACTCTGCATTTGCTCATATGAGGCACTACACATATCCATAATACATGAATAAATTTGCAGTATTGAA
12
+ CATTTGTTCCATTTGCTCAGGCATTTGCAGCTGTACTTACAGCTGTCCTTACTGGTTCTCTCTATTATGTGGCTGCCTCTCCTAAAGATCCTACTTATATTGTGGCACCTGTTTTACAGTCTCGCTCTGGTCGTCAAGATTTGAAAAAGCTATTTGAAGCCTGGTATGAGAAACGGCAAATGAAAAAAATATATTCACCACTTCTGGAAGGACTACTAGCTCTCTACCTAGGATTTGAGTGGATCCAAACGAATAACATTCTTGCTCCCATTATCACACATGGCATATACTCCACAGTTATATTGGGACATGGCCTTTGGAAGATAAACGACCACCGGCGAAGACTACGTCAAAGAATCCAACAGCTCAAATCTGAAGAACAAAATTCCCAGTAGACTTTGAAATACCTTCCATGTCTGGCTGTGATACAAAAAATGTATATGTATGTATTAGAGCTGCTAATTATGTAAAGAGAAAAGATGTATATACTTGTGTTAGCTGAGGTCTCGTACACACTGAATATTCAGGTTTTGTTCACCATTTTCTAATTTCGAGTTACTATATGTAGTGTTTTCTAATAAAATGAAATAAAATCCCCAAGTTGGGTTGATTTAAATT
13
+ GAGACCTGTTATGATTCACAGAGCCATTCTAGGATCTGTTGAGCGCATGTTTGCCATTCTTTTAGAGCACTACAAGGGTAAATGGCCCTTGTGGCTCAGTCCTCGTCAAGCAATTGTATGTCCTGTGTCAGAGAAATCACAAGCTTATGCACTGCAGGTGCGAGATCAGATCCACCAAGCAGGATATCACGTTGATGCTGATACAACTGATCGGAAGATTCAGAAGAAGGTACGGGAAGCTCAATTAGCGCAGTACAACTACATCTTGGTTGTTGGAGAGGAGGAAGCTAATACAGGACAGGTGAGTGTACGGGTTAGAGATAAAGCAGACCATAGCGTTATGAGTATTGAGAATCTACTCAAACACTTCAGCGACGAAGTTGCAGCTTTTCATTGATACTTCTCTTGTGAAAACTGTTGGAAGCAAATTTTACCCCCACTCACCTAGTTTGTTCACACTTTGTGTGCATTATTTATATTTTCAGCCTGACAATTTACATTTAGATGATTTGGGTAATGACTGTATTTTCTATGTGAATTTTGGAGCGCACTGATATCGATCCATTGTTTGAAAAGCTGAGAGAAAGTGTAATCTTTTATTTTCTGTCTACATTTTAATTATGTTTTTCGTTAGTTTTTTCCTTTTATATATTTGTTTGTTAAATTGAAGGAAACTATTGTTGG
14
+ GGCACCAGGGATCTTACAAGGCTGGATCTCCATAATAACAAGTTGACAGGGCCTATTCCTCCTCAAATTGGACGGTTGAAGCGTCTTAAAATACTCAATTTGAGGTGGAACAAACTACAGGATGCAATTCCTCCAGAAATTGGCGAGCTTAAAAGTTTAACACATCTGTACCTAAGCTTCAATAGTTTCAAGGGAGAAATTCCCAAAGAGCTAGCAAATCTTCCAGACCTTCGCTACCTTTATCTTCATGAAAACCGTTTAATTGGTAGGATACCACCTGAGTTGGGCACTCTACAAAACCTTCGGCACTTGGATGCTGGTAACAATCATTTGGTGGGTACCATAAGGGAACTCATTCGTATTGAAGGTTGCTTTCCAGCACTCCGCAATCTATATCTAAACAATAATTATTTTACTGGAGGAATGCCTGCACAACTTGCCAACTTATCCAGTCTTGAGATCTTGTACCTGTCCTACAATAAAATGTCAGGAGTTATACCATCTAGCCTTGCTCATATTCCTAAATTGACATACTTGTACTTGGATCACAATCAGTTTTCGGGGAGAATTCCCGAACCCTTTTACAAACATTCATTTTTGAAAGAAATGTACATCGAGGGAAATGCATTCCGGCCTGGTGTTAAACCCATTGGTTTCCATAAAGTGCTTGAAGTTTCTGATTCAGACTTCCTTGTTTAATGAAACTCAACATATTTAGTTTTTTAGGAAGTTTACGTGTATAATTAATGAAACAATAGCTCCTCTGATTTTCTCAATGAAAATTGCTATATGGGTAATTCAATTTTTGTCACGGCTGTCTTGTCAGAAGAATCAATAAATAATAGTGTTTTTTAACTCT
15
+ GGAAATGAGCACAATGTTAAGCAGATCAAGAATTACCGCCAAAAGGTTGAGGAGGAACTCTCCAAAATTTGTGGTGACATCCTGACTATTATAGACCAGCATCTAATTCCTTCTTCCGCCTCAGCAGAAGCTAGTGTTTTCTACTATAAGATGAAAGGTGATTATTATCGGTATCTTGCTGAGTTCAAGACCGACCAAGAAAGGAAAGAGGCAGCCGAGCAGTCACTCAAGGGATATGAGGCTGCTTCAGCCACTGCCAACACCGATCTTCCATCAACACATCCAATCCGTCTTGGACTTGCTCTCAACTTCTCTGTCTTTTATTACGAGATCATGAACTCTCCTGAAAGGGCCTGCCATTTGGCTAAACAAGCTTTTGATGAGGCAATTGCAGAGTTGGACACCTTGAGTGAAGAGTCATACAAGGACAGTACTTTGATCATGCAGTTGTTGAGAGACAACCTGACTCTCTGGACATCCGATTTGCCAGAAGATGGAGGCGAGGAGAACATAAAAGCTGAAGAAGCCAAACCTACTGAGCCTGAGAATTAACTAGGTTCTTTTGGATCTTTGGCCCTGATTCAATAGTCAGATTTTTGTGGTGCTCTGCAAAGAGGGCATTTTTCAGCTTTTCTTGCAATGGATTTGGAATGGACAATATGAGCTGTCGCCACTTCATAATTACCAACCAAAGCCAAAAGATCTGAGCCTGCCTTTTCTTTATTTCTTTAAATTGTTTTTCTTTCTTACTGCCTTTATCTATTTTAAGCAAAGTGGTCGGTTGAAACAATGGATAATTCACATTTAAATCATAAGAATCTTTTTCAAGTGTTCATTACATCCGTTTTGGTTCGTTTAAAATATTGTTTCCTATGCGCTCCTAGATGGGATACAGTACAAGTATTCAACTGTTGAGCAGAGATTTTTACCTCAAAAAATTAGT
16
+ AGACACAACATCATAGAAACAGATCAACAACACATTAAAATTAGCATGGATCATAGCTTACGTTGTTTTGGGTCGACACTACCCAAAACTCTTCTTCAGTTTCTGTTATCACCTTCACTCCTTCTCTTCATCTCCTTCTTCAGTTTCTCCAACGCAGCCTTCGACCTCGCCACCATACCCTTCAACGATGCCTATTCACCCCTCTTTGGGGATGGCAACCTTGTCCGCTCCGCCGATGGCAACGGTGTTCAACTCCTCCTCGATCGCTTCACCGGTTCTGGTTTCGTTTCTTCCAATATGTACCAGCATGGATTCTTCAGCGCCAATATCAAGCTACCATCGAATTACAGCGCTGGTATTTGCGTGGCCTTTTATACATCAAACAATGAGATGTTTGAGAAGACACACGATGAGTTAGACTTTGAATTCTTAGGTAATATAGCCGGAAAGCCTTGGAGGTTTCAGACAAACTTGTACGGCAATGGCAGCACCAACCGTGGCCGTGAGGAGCGGTACCGCCTCTGGTTTGATCCAACCAAGGGATTCCATAGATACAGCATTCTATGGACAGCTAAGAACATCATATTTTACATAGATGAGGTTCCAATTAGAGAAATTATAAGAAGTGAAGAAATGGGAGCTGATTACCCAGCAAAGCCAATGGCATTATACGCCACAATATGGGATGCATCAAATTGGGCCACATCGGGTGGAAA
@@ -24,7 +24,7 @@ Quorum.blast_remote = blast['remote']
24
24
  Quorum.blast_ssh_host = blast['ssh_host']
25
25
  Quorum.blast_ssh_user = blast['ssh_user']
26
26
  Quorum.blast_ssh_options = blast['ssh_options']
27
- Quorum.blast_script = blast['script']
27
+ Quorum.blast_bin = blast['bin']
28
28
  Quorum.blast_log_dir = blast['log_dir']
29
29
  Quorum.blast_tmp_dir = blast['tmp_dir']
30
30
  Quorum.blast_db = blast['blast_db']
@@ -1 +1,4 @@
1
- Resque.inline = Rails.env.test?
1
+ if Rails.env.test?
2
+ Resque.inline = true
3
+ Resque.redis = 'localhost:9736'
4
+ end
@@ -22,7 +22,7 @@
22
22
  # password: "secret password"
23
23
  # port: 8888
24
24
  #
25
- # script: Absolute path to search script.
25
+ # bin: Absolute path to quorum/bin.
26
26
  #
27
27
  # log_dir: Absolute path to log file directory.
28
28
  #
@@ -72,7 +72,7 @@ development:
72
72
  # Example:
73
73
  # password: "secret password"
74
74
  # port: 8888
75
- script: "%{RAILS_ROOT}/quorum/bin/search"
75
+ bin: "%{RAILS_ROOT}/quorum/bin"
76
76
  log_dir: "%{RAILS_ROOT}/quorum/log"
77
77
  tmp_dir: "%{RAILS_ROOT}/quorum/tmp"
78
78
  blast_db: "%{RAILS_ROOT}/quorum/blastdb"
@@ -99,7 +99,7 @@ test:
99
99
  # Example:
100
100
  # password: "secret password"
101
101
  # port: 8888
102
- script: "%{RAILS_ROOT}/quorum/bin/search"
102
+ bin: "%{RAILS_ROOT}/quorum/bin"
103
103
  log_dir: "%{RAILS_ROOT}/quorum/log"
104
104
  tmp_dir: "%{RAILS_ROOT}/quorum/tmp"
105
105
  blast_db: "%{RAILS_ROOT}/quorum/blastdb"
@@ -122,7 +122,7 @@ production:
122
122
  # Example:
123
123
  # password: "secret password"
124
124
  # port: 8888
125
- script:
125
+ bin:
126
126
  log_dir:
127
127
  tmp_dir:
128
128
  blast_db:
@@ -11,7 +11,7 @@
11
11
  #
12
12
  # It's strongly recommended to check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(:version => 20111227224920) do
14
+ ActiveRecord::Schema.define(:version => 20120110181717) do
15
15
 
16
16
  create_table "quorum_blastn_job_reports", :force => true do |t|
17
17
  t.string "query"
@@ -41,6 +41,7 @@ ActiveRecord::Schema.define(:version => 20111227224920) do
41
41
  t.integer "blastn_job_id"
42
42
  t.datetime "created_at"
43
43
  t.datetime "updated_at"
44
+ t.string "hit_display_id"
44
45
  end
45
46
 
46
47
  create_table "quorum_blastn_jobs", :force => true do |t|
@@ -86,6 +87,7 @@ ActiveRecord::Schema.define(:version => 20111227224920) do
86
87
  t.integer "blastp_job_id"
87
88
  t.datetime "created_at"
88
89
  t.datetime "updated_at"
90
+ t.string "hit_display_id"
89
91
  end
90
92
 
91
93
  create_table "quorum_blastp_jobs", :force => true do |t|
@@ -131,6 +133,7 @@ ActiveRecord::Schema.define(:version => 20111227224920) do
131
133
  t.integer "blastx_job_id"
132
134
  t.datetime "created_at"
133
135
  t.datetime "updated_at"
136
+ t.string "hit_display_id"
134
137
  end
135
138
 
136
139
  create_table "quorum_blastx_jobs", :force => true do |t|
@@ -148,6 +151,9 @@ ActiveRecord::Schema.define(:version => 20111227224920) do
148
151
  t.datetime "updated_at"
149
152
  end
150
153
 
154
+ create_table "quorum_hmmer_job_reports", :force => true do |t|
155
+ end
156
+
151
157
  create_table "quorum_hmmer_jobs", :force => true do |t|
152
158
  t.string "expectation"
153
159
  t.integer "min_score"
@@ -194,6 +200,7 @@ ActiveRecord::Schema.define(:version => 20111227224920) do
194
200
  t.integer "tblastn_job_id"
195
201
  t.datetime "created_at"
196
202
  t.datetime "updated_at"
203
+ t.string "hit_display_id"
197
204
  end
198
205
 
199
206
  create_table "quorum_tblastn_jobs", :force => true do |t|