quorum 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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|