Class: Bioroebe::CheckForMismatches

Inherits:
CommandlineApplication show all
Defined in:
lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb

Overview

Bioroebe::CheckForMismatches

Constant Summary collapse

COLOUR_TO_BE_USED_FOR_A_MISMATCH =
#

COLOUR_TO_BE_USED_FOR_A_MISMATCH

This constant can be used to colourize a mismatch. Make sure that this is a Symbol, ideally.

#
:tomato

Constants inherited from CommandlineApplication

Bioroebe::CommandlineApplication::OLD_VERBOSE_VALUE

Constants included from ColoursForBase

Bioroebe::ColoursForBase::ARRAY_HTML_COLOURS_IN_USE

Constants inherited from Base

Base::NAMESPACE

Instance Method Summary collapse

Methods inherited from CommandlineApplication

#all_aminoacids?, #append_what_into, #at_home?, #be_silent, #be_verbose?, #cat, #ccliner, #change_directory, #cliner, #codon_table_dataset?, #codon_to_aminoacid, #codons_for?, #colourize_this_dna_sequence, #complement, #cp, #disable_warnings, #download_dir?, #editor?, #enable_warnings, #ensure_that_the_base_directories_exist, #esystem, #extract, #is_this_a_start_codon?, #is_this_a_stop_codon?, #leading_five_prime, #load_bioroebe_yaml_file, #log_directory?, #one_letter_to_long_name, #one_to_three, #only_numbers?, #open_in_browser, #opne, #opnn, #pad_with_double_quotes, #pad_with_single_quotes, #partner_nucleotide, #remove_numbers, #remove_trailing_ansii_escape_code, #return_all_possible_start_codons, #return_array_of_one_letter_aminoacids, #return_cheerful_person, #return_chunked_display, #return_ubiquitin_sequence, #set_be_verbose, #start_codon?, #stop_codons?, #strict_filter_away_invalid_aminoacids, #taxonomy_download_directory?, #three_to_one, #to_rna, #trailing_three_prime, #use_opn?, #verbose_truth, #was_or_were, #without_extname, #write_what_into

Methods included from CommandlineArguments

#commandline_arguments?, #commandline_arguments_that_are_files?, #e, #first?, #first_non_hyphen_argument?, #remove_hyphens_from_the_commandline_arguments, #return_commandline_arguments_as_string, #return_commandline_arguments_that_are_not_files, #return_entries_without_two_leading_hyphens, #select_commandline_arguments, #select_entries_starting_with_two_hyphens, #set_commandline_arguments

Methods included from ColoursForBase

#colourize_this_aminoacid_sequence_for_the_commandline, #colourize_this_nucleotide_sequence, #disable_colours, #ecomment, #efancy, #egold, #enable_colours, #eorange, #eparse, #erev, #red, #remove_trailing_escape_part, #return_colour_for_nucleotides, #rev, #sdir, #set_use_colours, #sfancy, #sfile, #simp, #swarn, #use_colours?, #use_colours_within_the_bioroebe_namespace?

Methods inherited from Base

#append_what_into, #can_base_pair?, #convert_global_env, #delete_file, #directory_to_the_codon_tables?, #file_readlines, #infer_the_namespace, #is_on_roebe?, #is_palindrome?, #main_encoding?, #mkdir, #move_file, #mv, #namespace?, #no_file_exists_at, #no_newlines, #project_yaml_directory?, #rds, #register_sigint, #return_pwd, #return_the_first_line_of_this_file, #word_wrap, #write_what_into

Constructor Details

#initialize(input = ARGV, run_already = true) ⇒ CheckForMismatches

#

initialize

#

33
34
35
36
37
38
39
40
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 33

def initialize(
    input       = ARGV,
    run_already = true
  )
  reset
  set_commandline_input(input)
  run if run_already
end

Instance Method Details

#chop_down_to_sequence_length(i) ⇒ Object

#

chop_down_to_sequence_length

#

142
143
144
145
146
147
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 142

def chop_down_to_sequence_length(i)
  if i.size > @first_sequence.size
    i = i[0, @first_sequence.size]
  end
  return i
end

#corresponding_nucleotide(i) ⇒ Object

#

corresponding_nucleotide

#

114
115
116
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 114

def corresponding_nucleotide(i)
  return_dna_match(i)
end

#get_user_inputObject

#

get_user_input

This method is to fetch user input.

#

90
91
92
93
94
95
96
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 90

def get_user_input
  opnn; erev 'Input your first sequence now:'
  first_sequence = $stdin.gets.chomp
  opnn; erev 'Input your second sequence now:'
  second_sequence = $stdin.gets.chomp
  set_data(first_sequence, second_sequence)
end

#handle_given_commandline_input(i = @commandline_input) ⇒ Object

#

handle_given_commandline_input

#

132
133
134
135
136
137
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 132

def handle_given_commandline_input(i = @commandline_input)
  unless i.empty?
    set_data(i)
    @obtain_user_input = false
  end
end

#report_resultsObject Also known as: report

#

report_results (report tag)

#

159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 159

def report_results
  mismatches = @array_mismatches
  if mismatches.empty?
    e
    erev 'We found no mismatch.'
    e
  else
    e
    erev 'We found '+swarn('mismatches ')+rev+'at:'
    e
    first_sequence  = @first_sequence
    second_sequence = @second_sequence
    colourized_first_sequence  = first_sequence.dup
    colourized_second_sequence = second_sequence.dup
    mismatches.each {|index, character|
      e rev+'  Position: '+simp(index.to_s)+rev+
        ', Nucleotide being: '+sfancy(character.to_s)
    }
    e
    @array_mismatches.reverse.each {|index, character|
      colourized_first_sequence[index-1,1]  = send(COLOUR_TO_BE_USED_FOR_A_MISMATCH, character)+
                                              rev
      corresponding_character = colourized_second_sequence[index-1,1]
      colourized_second_sequence[index-1,1] = send(COLOUR_TO_BE_USED_FOR_A_MISMATCH, corresponding_character)+
                                              rev
    }
    e "#{rev}The two strands were:"
    e
    e rev+
      "     "+
      turquoise(
        chop_down_to_sequence_length(
          return_one_to_ten+return_one_to_ten
        )
      )
    e rev+"  5'-"+colourized_first_sequence
    show_three_prime_colourized_sequence(colourized_second_sequence)
    e
  end
end

#resetObject

#

reset

#

45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 45

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @first_sequence
  # ======================================================================= #
  @first_sequence    = nil
  # ======================================================================= #
  # === @second_sequence
  # ======================================================================= #
  @second_sequence   = nil
  # ======================================================================= #
  # === @obtain_user_input
  # ======================================================================= #
  @obtain_user_input = true
  # ======================================================================= #
  # === @array_mismatches
  # ======================================================================= #
  @array_mismatches  = [] # This contains all mismatches.
end

#return_one_to_tenObject

#

return_one_to_ten

#

152
153
154
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 152

def return_one_to_ten
  '1234567890'
end

#runObject

#

run (run tag)

#

210
211
212
213
214
215
216
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 210

def run
  get_user_input if @obtain_user_input
  opnn; e rev+'We will now compare these two sequences'
  opnn; e rev+'for any potential mismatch(es).'
  scan_for_mismatches
  report_results
end

#scan_for_mismatchesObject

#

scan_for_mismatches

#

101
102
103
104
105
106
107
108
109
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 101

def scan_for_mismatches
  @first_sequence.scan(/./).each_with_index {|character, index|
    result = corresponding_nucleotide(@second_sequence[index])
    if character == result # then all is fine
    else # else this is not fine so we spit out the problem.
      @array_mismatches << [index+1, character]
    end
  }
end

#set_commandline_input(i) ⇒ Object

#

set_commandline_input

#

121
122
123
124
125
126
127
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 121

def set_commandline_input(i)
  if i.is_a? Array
    i = i.join(' ').strip
  end
  @commandline_input = i.to_s.dup
  handle_given_commandline_input
end

#set_data(a = 'AAAAATTTTTCAAATTAA', b = 'TTTTTAAAAAATTTAAAA') ⇒ Object

#

set_data

#

69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 69

def set_data( # Use this method to set the strand.
    a = 'AAAAATTTTTCAAATTAA',
    b = 'TTTTTAAAAAATTTAAAA'
  )
  if a.include? '|'
    # ===================================================================== #
    # In this case, split on it, and re-assign.
    # ===================================================================== #
    splitted = a.split('|').map(&:strip)
    a = splitted.first
    b = splitted.last
  end
  @first_sequence  = a.upcase # .allow_only_valid_dna
  @second_sequence = b.upcase # .allow_only_valid_dna
end

#show_three_prime_colourized_sequence(i) ⇒ Object

#

show_three_prime_colourized_sequence

#

203
204
205
# File 'lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb', line 203

def show_three_prime_colourized_sequence(i)
  e rev+"  3'-"+i
end