Class: Bioroebe::ShowFastaStatistics

Inherits:
CommandlineApplication show all
Defined in:
lib/bioroebe/fasta_and_fastq/show_fasta_statistics.rb

Overview

Bioroebe::ShowFastaStatistics

Constant Summary

Constants inherited from CommandlineApplication

CommandlineApplication::OLD_VERBOSE_VALUE

Constants included from ColoursForBase

ColoursForBase::ARRAY_HTML_COLOURS_IN_USE

Constants inherited from Base

Base::NAMESPACE

Class Method Summary collapse

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, #opnerev, #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, #runmode?, #set_be_verbose, #set_runmode, #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 BaseModule

#absolute_path, #default_file_read, #file_readlines

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_will_we_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?, #is_on_roebe?, #is_palindrome?, #main_encoding?, #mkdir, #move_file, #mv, #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

Methods included from InternalHashModule

#internal_hash?, #reset_the_internal_hash

Methods included from InferTheNamespaceModule

#infer_the_namespace, #namespace?

Constructor Details

#initialize(commandline_arguments = nil, run_already = true) ⇒ ShowFastaStatistics

#

initialize

#


26
27
28
29
30
31
32
33
34
35
# File 'lib/bioroebe/fasta_and_fastq/show_fasta_statistics.rb', line 26

def initialize(
    commandline_arguments = nil,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Bioroebe::ShowFastaStatistics[]

#


171
172
173
# File 'lib/bioroebe/fasta_and_fastq/show_fasta_statistics.rb', line 171

def self.[](i = '')
  new(i)
end

Instance Method Details

#add_these_entries_to_the_fasta_files(i) ⇒ Object

#

add_these_entries_to_the_fasta_files

This method can be used to append to our Array keeping track of the FASTA files.

#


118
119
120
121
# File 'lib/bioroebe/fasta_and_fastq/show_fasta_statistics.rb', line 118

def add_these_entries_to_the_fasta_files(i)
  @array_fasta_files << i
  @array_fasta_files.flatten!
end

#determine_all_local_fasta_filesObject

#

determine_all_local_fasta_files

#


54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/bioroebe/fasta_and_fastq/show_fasta_statistics.rb', line 54

def determine_all_local_fasta_files
  # ======================================================================= #
  # === @array_fasta_files
  #
  # We will populate the Array next. First we will try via .fa files,
  # but if this is empty, we will try via .fasta as well.
  # ======================================================================= #
  @array_fasta_files = Dir['*.fa']
  if @array_fasta_files.empty?
    @array_fasta_files = Dir['*.fasta']
  end
end
#

menu (menu tag)

#


70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/bioroebe/fasta_and_fastq/show_fasta_statistics.rb', line 70

def menu(
    i = commandline_arguments?
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i # case tag
    # ===================================================================== #
    # === --help
    # ===================================================================== #
    when /help/
      show_help
      exit
    # ===================================================================== #
    # === show_fasta_statistics --start-with
    #
    # This entry point allows us to restrict to only certain .fa 
    # filenames.
    #
    # Usage example on the commandline:
    #
    #   show_fasta_statistics --start-with=ncrna
    #   show_fasta_statistics --fasta-stats=ncrna
    #
    # ===================================================================== #
    when /^-?-?start(_|-)?with=(.+)$/i, # $2
         /^-?-?fasta(-|_)?stats=(.+)$/i
      starts_with = $2.to_s.dup
      @array_fasta_files.select! {|line|
        line.start_with? starts_with
      }
    else
      if File.directory? i
        _ = Dir[rds(i+'/**.fa')]
        _ << Dir[rds(i+'/**.fasta')]
        _.flatten!
        add_these_entries_to_the_fasta_files(_)
      end
    end
  end
end

#resetObject

#

reset (reset tag)

#


40
41
42
43
44
45
46
47
48
49
# File 'lib/bioroebe/fasta_and_fastq/show_fasta_statistics.rb', line 40

def reset
  super()
  determine_all_local_fasta_files
  # ======================================================================= #
  # === @pad_filename_to
  #
  # This variable keeps track how much we should pad things.
  # ======================================================================= #
  @pad_filename_to = 35 
end

#runObject

#

run (run tag)

#


136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/bioroebe/fasta_and_fastq/show_fasta_statistics.rb', line 136

def run
  menu
  regex_to_use = /(\d+)/
  sorted = @array_fasta_files.sort_by {|line|
    line =~ regex_to_use
    match = $1.to_s.dup.to_i
    if match == 0
      match = 999 # This is just so that we sort entries such as "foo.MT.fa" last.
    end
    match
  }
  sorted.each_with_index {|this_file, index| index += 1
    show_this_filename = this_file.sub(/\.fa$/,'')
    padded_index = index.to_s.rjust(4)
    # ===================================================================== #
    # Next colourize the index a little bit.
    # ===================================================================== #
    result = lightgreen(padded_index)+' '+
             sfile(
               show_this_filename.ljust(@pad_filename_to) # Pad the name of the file.
             )
    if File.exist? this_file
      n_entries = ' '+File.readlines(this_file).select {|line|
        line.start_with? '>'
      }.size.to_s.rjust(5)
      colourized_n_entries = seagreen("#{n_entries.to_s} different entries")
      result << colourized_n_entries
    end
    e result
  }
end

#show_helpObject

#

show_help (help tag)

#


126
127
128
129
130
131
# File 'lib/bioroebe/fasta_and_fastq/show_fasta_statistics.rb', line 126

def show_help
  e
  e '  --start-with= # consider only these file names '\
    'that start with that substring'
  e
end