bioroebe 0.10.80 → 0.12.12

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bioroebe might be problematic. Click here for more details.

Files changed (242) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3612 -2781
  3. data/bin/bioroebe +7 -1
  4. data/bin/bioroebe_hash +7 -0
  5. data/bin/codon_to_aminoacid +1 -0
  6. data/bioroebe.gemspec +3 -3
  7. data/doc/README.gen +3612 -2742
  8. data/doc/quality_control/commandline_applications.md +3 -3
  9. data/doc/todo/bioroebe_java_todo.md +22 -0
  10. data/doc/todo/bioroebe_todo.md +2059 -2615
  11. data/lib/bioroebe/aminoacids/aminoacid_substitution.rb +1 -9
  12. data/lib/bioroebe/aminoacids/codon_percentage.rb +1 -9
  13. data/lib/bioroebe/aminoacids/deduce_aminoacid_sequence.rb +1 -9
  14. data/lib/bioroebe/aminoacids/display_aminoacid_table.rb +1 -0
  15. data/lib/bioroebe/aminoacids/show_hydrophobicity.rb +1 -6
  16. data/lib/bioroebe/base/colours_for_base/colours_for_base.rb +18 -8
  17. data/lib/bioroebe/base/commandline_application/commandline_arguments.rb +15 -11
  18. data/lib/bioroebe/base/commandline_application/misc.rb +66 -49
  19. data/lib/bioroebe/base/commandline_application/opn.rb +8 -8
  20. data/lib/bioroebe/base/commandline_application/reset.rb +3 -2
  21. data/lib/bioroebe/base/misc.rb +35 -0
  22. data/lib/bioroebe/base/prototype/misc.rb +11 -1
  23. data/lib/bioroebe/codon_tables/frequencies/parse_frequency_table.rb +2 -10
  24. data/lib/bioroebe/codons/codons.rb +1 -1
  25. data/lib/bioroebe/codons/convert_this_codon_to_that_aminoacid.rb +192 -58
  26. data/lib/bioroebe/codons/possible_codons_for_this_aminoacid.rb +1 -9
  27. data/lib/bioroebe/codons/show_codon_tables.rb +6 -2
  28. data/lib/bioroebe/codons/show_codon_usage.rb +15 -4
  29. data/lib/bioroebe/colours/rev.rb +4 -1
  30. data/lib/bioroebe/constants/aminoacids_and_proteins.rb +1 -0
  31. data/lib/bioroebe/constants/database_constants.rb +1 -1
  32. data/lib/bioroebe/constants/files_and_directories.rb +31 -4
  33. data/lib/bioroebe/constants/misc.rb +20 -0
  34. data/lib/bioroebe/conversions/dna_to_aminoacid_sequence.rb +58 -24
  35. data/lib/bioroebe/count/count_amount_of_aminoacids.rb +3 -2
  36. data/lib/bioroebe/count/count_amount_of_nucleotides.rb +3 -0
  37. data/lib/bioroebe/crystal/README.md +2 -0
  38. data/lib/bioroebe/crystal/to_rna.cr +19 -0
  39. data/lib/bioroebe/data/README.md +11 -8
  40. data/lib/bioroebe/data/electron_microscopy/pos_example.pos +396 -0
  41. data/lib/bioroebe/data/electron_microscopy/test_particles.star +36 -0
  42. data/lib/bioroebe/data/fasta/human/Homo_sapiens_hemoglobin_subunit_alpha_HBB_mRNA.fasta +9 -0
  43. data/lib/bioroebe/data/fasta/human/Homo_sapiens_hemoglobin_subunit_beta_HBB_mRNA.fasta +8 -0
  44. data/lib/bioroebe/data/fasta/human/README.md +2 -0
  45. data/lib/bioroebe/electron_microscopy/coordinate_analyzer.rb +15 -18
  46. data/lib/bioroebe/{fasta_and_fastq/parse_fasta/run.rb → electron_microscopy/electron_microscopy_module.rb} +16 -8
  47. data/lib/bioroebe/electron_microscopy/fix_pos_file.rb +1 -9
  48. data/lib/bioroebe/electron_microscopy/flipy.rb +83 -0
  49. data/lib/bioroebe/electron_microscopy/parse_coordinates.rb +2 -10
  50. data/lib/bioroebe/electron_microscopy/read_file_xmd.rb +1 -9
  51. data/lib/bioroebe/electron_microscopy/simple_star_file_generator.rb +4 -9
  52. data/lib/bioroebe/enzymes/has_this_restriction_enzyme.rb +10 -3
  53. data/lib/bioroebe/enzymes/restriction_enzyme.rb +23 -1
  54. data/lib/bioroebe/enzymes/restriction_enzymes/statistics.rb +65 -0
  55. data/lib/bioroebe/fasta_and_fastq/autocorrect_the_name_of_this_fasta_file.rb +1 -9
  56. data/lib/bioroebe/fasta_and_fastq/compact_fasta_file/compact_fasta_file.rb +7 -9
  57. data/lib/bioroebe/fasta_and_fastq/fasta_defline/fasta_defline.rb +1 -5
  58. data/lib/bioroebe/fasta_and_fastq/fasta_to_yaml/fasta_to_yaml.rb +81 -0
  59. data/lib/bioroebe/fasta_and_fastq/parse_fasta/parse_fasta.rb +1465 -7
  60. data/lib/bioroebe/fasta_and_fastq/return_fasta_subsection_of_this_file.rb +11 -2
  61. data/lib/bioroebe/fasta_and_fastq/show_fasta_headers.rb +27 -12
  62. data/lib/bioroebe/fasta_and_fastq/simplify_fasta_header/simplify_fasta_header.rb +1 -5
  63. data/lib/bioroebe/fasta_and_fastq/split_this_fasta_file_into_chromosomes/constants.rb +0 -5
  64. data/lib/bioroebe/genome/README.md +4 -0
  65. data/lib/bioroebe/genome/genome.rb +67 -0
  66. data/lib/bioroebe/genomes/genome_pattern.rb +3 -9
  67. data/lib/bioroebe/gui/gtk +1 -0
  68. data/lib/bioroebe/gui/gtk3/alignment/alignment.rb +73 -128
  69. data/lib/bioroebe/gui/gtk3/controller/controller.rb +45 -27
  70. data/lib/bioroebe/gui/gtk3/dna_to_aminoacid_widget/dna_to_aminoacid_widget.rb +76 -50
  71. data/lib/bioroebe/gui/gtk3/fasta_table_widget/fasta_table_widget.rb +99 -21
  72. data/lib/bioroebe/gui/gtk3/hamming_distance/hamming_distance.rb +42 -28
  73. data/lib/bioroebe/gui/gtk3/nucleotide_analyser/nucleotide_analyser.rb +119 -71
  74. data/lib/bioroebe/gui/gtk3/protein_to_DNA/protein_to_DNA.rb +18 -18
  75. data/lib/bioroebe/gui/gtk3/random_sequence/random_sequence.rb +19 -11
  76. data/lib/bioroebe/gui/jruby/alignment/alignment.rb +165 -0
  77. data/lib/bioroebe/gui/libui/alignment/alignment.rb +3 -1
  78. data/lib/bioroebe/gui/libui/controller/controller.rb +116 -0
  79. data/lib/bioroebe/gui/libui/random_sequence/random_sequence.rb +18 -2
  80. data/lib/bioroebe/gui/libui/show_codon_table/show_codon_table.rb +2 -0
  81. data/lib/bioroebe/gui/libui/three_to_one/three_to_one.rb +8 -6
  82. data/lib/bioroebe/gui/shared_code/alignment/alignment_module.rb +102 -0
  83. data/lib/bioroebe/gui/shared_code/levensthein_distance/levensthein_distance_module.rb +18 -16
  84. data/lib/bioroebe/gui/shared_code/protein_to_DNA/protein_to_DNA_module.rb +14 -14
  85. data/lib/bioroebe/gui/swing/three_to_one/ThreeToOne$1.class +0 -0
  86. data/lib/bioroebe/gui/swing/three_to_one/ThreeToOne$CloseListener.class +0 -0
  87. data/lib/bioroebe/gui/swing/three_to_one/ThreeToOne.class +0 -0
  88. data/lib/bioroebe/gui/swing/three_to_one/ThreeToOne.java +141 -0
  89. data/lib/bioroebe/images/FORWARD_PRIMER.png +0 -0
  90. data/lib/bioroebe/images/REVERSE_PRIMER.png +0 -0
  91. data/lib/bioroebe/java/README.md +4 -0
  92. data/lib/bioroebe/java/bioroebe/Sequence.java +25 -1
  93. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/Base.class +0 -0
  94. data/lib/bioroebe/java/bioroebe/{Base.java → src/main/java/bioroebe/Base.java} +15 -2
  95. data/lib/bioroebe/java/bioroebe/{BisulfiteTreatment.class → src/main/java/bioroebe/BisulfiteTreatment.class} +0 -0
  96. data/lib/bioroebe/java/bioroebe/{Codons.class → src/main/java/bioroebe/Codons.class} +0 -0
  97. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/Codons.java +34 -0
  98. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/Commandline.class +0 -0
  99. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/Commandline.java +101 -0
  100. data/lib/bioroebe/java/bioroebe/{GenerateRandomDnaSequence.class → src/main/java/bioroebe/GenerateRandomDnaSequence.class} +0 -0
  101. data/lib/bioroebe/java/bioroebe/{GenerateRandomDnaSequence.java → src/main/java/bioroebe/GenerateRandomDnaSequence.java} +8 -2
  102. data/lib/bioroebe/java/bioroebe/{IsPalindrome.class → src/main/java/bioroebe/IsPalindrome.class} +0 -0
  103. data/lib/bioroebe/java/bioroebe/{IsPalindrome.java → src/main/java/bioroebe/IsPalindrome.java} +5 -1
  104. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/PartnerNucleotide.class +0 -0
  105. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/PartnerNucleotide.java +56 -0
  106. data/lib/bioroebe/java/bioroebe/{RemoveFile.java → src/main/java/bioroebe/RemoveFile.java} +10 -4
  107. data/lib/bioroebe/java/bioroebe/{RemoveNumbers.class → src/main/java/bioroebe/RemoveNumbers.class} +0 -0
  108. data/lib/bioroebe/java/bioroebe/{RemoveNumbers.java → src/main/java/bioroebe/RemoveNumbers.java} +1 -0
  109. data/lib/bioroebe/java/bioroebe/{ToCamelcase.class → src/main/java/bioroebe/ToCamelcase.class} +0 -0
  110. data/lib/bioroebe/java/bioroebe/{ToCamelcase.java → src/main/java/bioroebe/ToCamelcase.java} +3 -3
  111. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/ToRNA.class +0 -0
  112. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/ToRNA.java +42 -0
  113. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/toplevel_methods/BaseComposition.class +0 -0
  114. data/lib/bioroebe/java/bioroebe/src/main/java/bioroebe/toplevel_methods/BaseComposition.java +75 -0
  115. data/lib/bioroebe/misc/ruler.rb +11 -2
  116. data/lib/bioroebe/nucleotides/most_likely_nucleotide_sequence_for_this_aminoacid_sequence.rb +1 -9
  117. data/lib/bioroebe/nucleotides/show_nucleotide_sequence.rb +7 -7
  118. data/lib/bioroebe/parsers/genbank_parser.rb +347 -26
  119. data/lib/bioroebe/parsers/gff.rb +1 -9
  120. data/lib/bioroebe/patterns/scan_for_repeat.rb +1 -5
  121. data/lib/bioroebe/pdb/fetch_fasta_sequence_from_pdb.rb +1 -9
  122. data/lib/bioroebe/pdb/parse_mmCIF_file.rb +1 -9
  123. data/lib/bioroebe/pdb/parse_pdb_file.rb +4 -10
  124. data/lib/bioroebe/project/project.rb +1 -1
  125. data/lib/bioroebe/python/README.md +1 -0
  126. data/lib/bioroebe/python/__pycache__/mymodule.cpython-39.pyc +0 -0
  127. data/lib/bioroebe/python/gui/gtk3/all_in_one.css +4 -0
  128. data/lib/bioroebe/python/gui/gtk3/all_in_one.py +59 -0
  129. data/lib/bioroebe/python/gui/gtk3/widget1.py +20 -0
  130. data/lib/bioroebe/python/gui/tkinter/all_in_one.py +91 -0
  131. data/lib/bioroebe/python/mymodule.py +8 -0
  132. data/lib/bioroebe/python/protein_to_dna.py +33 -0
  133. data/lib/bioroebe/python/shell/shell.py +19 -0
  134. data/lib/bioroebe/python/to_rna.py +14 -0
  135. data/lib/bioroebe/python/toplevel_methods/esystem.py +12 -0
  136. data/lib/bioroebe/python/toplevel_methods/open_in_browser.py +20 -0
  137. data/lib/bioroebe/python/toplevel_methods/palindromes.py +42 -0
  138. data/lib/bioroebe/python/toplevel_methods/rds.py +13 -0
  139. data/lib/bioroebe/python/toplevel_methods/shuffleseq.py +23 -0
  140. data/lib/bioroebe/python/toplevel_methods/three_delimiter.py +37 -0
  141. data/lib/bioroebe/python/toplevel_methods/time_and_date.py +43 -0
  142. data/lib/bioroebe/python/toplevel_methods/to_camelcase.py +21 -0
  143. data/lib/bioroebe/requires/require_the_bioroebe_project.rb +3 -1
  144. data/lib/bioroebe/sequence/alignment.rb +14 -4
  145. data/lib/bioroebe/sequence/dna.rb +1 -0
  146. data/lib/bioroebe/sequence/nucleotide_module/nucleotide_module.rb +28 -25
  147. data/lib/bioroebe/sequence/protein.rb +105 -3
  148. data/lib/bioroebe/sequence/sequence.rb +87 -21
  149. data/lib/bioroebe/shell/menu.rb +3829 -3714
  150. data/lib/bioroebe/shell/misc.rb +59 -4307
  151. data/lib/bioroebe/shell/readline/readline.rb +1 -1
  152. data/lib/bioroebe/shell/shell.rb +11255 -28
  153. data/lib/bioroebe/siRNA/siRNA.rb +81 -1
  154. data/lib/bioroebe/string_matching/find_longest_substring.rb +3 -2
  155. data/lib/bioroebe/string_matching/hamming_distance.rb +1 -9
  156. data/lib/bioroebe/taxonomy/class_methods.rb +3 -8
  157. data/lib/bioroebe/taxonomy/constants.rb +4 -3
  158. data/lib/bioroebe/taxonomy/edit.rb +2 -1
  159. data/lib/bioroebe/taxonomy/help/help.rb +10 -10
  160. data/lib/bioroebe/taxonomy/help/helpline.rb +2 -2
  161. data/lib/bioroebe/taxonomy/info/check_available.rb +15 -9
  162. data/lib/bioroebe/taxonomy/info/info.rb +18 -11
  163. data/lib/bioroebe/taxonomy/info/is_dna.rb +46 -36
  164. data/lib/bioroebe/taxonomy/interactive.rb +140 -104
  165. data/lib/bioroebe/taxonomy/menu.rb +27 -18
  166. data/lib/bioroebe/taxonomy/parse_fasta.rb +3 -1
  167. data/lib/bioroebe/taxonomy/shared.rb +1 -0
  168. data/lib/bioroebe/taxonomy/taxonomy.rb +1 -0
  169. data/lib/bioroebe/toplevel_methods/aminoacids_and_proteins.rb +31 -24
  170. data/lib/bioroebe/toplevel_methods/colourize_related_methods.rb +164 -0
  171. data/lib/bioroebe/toplevel_methods/databases.rb +1 -1
  172. data/lib/bioroebe/toplevel_methods/digest.rb +18 -8
  173. data/lib/bioroebe/toplevel_methods/fasta_and_fastq.rb +107 -63
  174. data/lib/bioroebe/toplevel_methods/file_and_directory_related_actions.rb +14 -2
  175. data/lib/bioroebe/toplevel_methods/frequencies.rb +8 -1
  176. data/lib/bioroebe/toplevel_methods/misc.rb +142 -12
  177. data/lib/bioroebe/toplevel_methods/nucleotides.rb +118 -46
  178. data/lib/bioroebe/toplevel_methods/open_in_browser.rb +2 -0
  179. data/lib/bioroebe/toplevel_methods/palindromes.rb +1 -2
  180. data/lib/bioroebe/toplevel_methods/taxonomy.rb +2 -2
  181. data/lib/bioroebe/toplevel_methods/to_camelcase.rb +5 -0
  182. data/lib/bioroebe/utility_scripts/align_open_reading_frames.rb +1 -9
  183. data/lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb +1 -9
  184. data/lib/bioroebe/utility_scripts/compacter.rb +1 -9
  185. data/lib/bioroebe/utility_scripts/compseq/compseq.rb +1 -9
  186. data/lib/bioroebe/utility_scripts/consensus_sequence.rb +6 -6
  187. data/lib/bioroebe/utility_scripts/create_batch_entrez_file.rb +1 -9
  188. data/lib/bioroebe/utility_scripts/dot_alignment.rb +1 -9
  189. data/lib/bioroebe/utility_scripts/move_file_to_its_correct_location.rb +1 -4
  190. data/lib/bioroebe/utility_scripts/parse_taxonomy.rb +2 -2
  191. data/lib/bioroebe/utility_scripts/showorf/constants.rb +0 -5
  192. data/lib/bioroebe/utility_scripts/showorf/reset.rb +1 -4
  193. data/lib/bioroebe/version/version.rb +2 -2
  194. data/lib/bioroebe/www/embeddable_interface.rb +103 -54
  195. data/lib/bioroebe/www/sinatra/sinatra.rb +186 -70
  196. data/lib/bioroebe/yaml/aminoacids/amino_acids_long_name_to_one_letter.yml +2 -2
  197. data/lib/bioroebe/yaml/configuration/browser.yml +1 -1
  198. data/lib/bioroebe/yaml/configuration/temp_dir.yml +1 -1
  199. data/lib/bioroebe/yaml/genomes/README.md +3 -4
  200. data/lib/bioroebe/yaml/restriction_enzymes/restriction_enzymes.yml +27 -27
  201. metadata +81 -64
  202. data/doc/setup.rb +0 -1655
  203. data/lib/bioroebe/fasta_and_fastq/parse_fasta/constants.rb +0 -50
  204. data/lib/bioroebe/fasta_and_fastq/parse_fasta/initialize.rb +0 -86
  205. data/lib/bioroebe/fasta_and_fastq/parse_fasta/menu.rb +0 -117
  206. data/lib/bioroebe/fasta_and_fastq/parse_fasta/misc.rb +0 -981
  207. data/lib/bioroebe/fasta_and_fastq/parse_fasta/report.rb +0 -156
  208. data/lib/bioroebe/fasta_and_fastq/parse_fasta/reset.rb +0 -128
  209. data/lib/bioroebe/genbank/genbank_parser.rb +0 -291
  210. data/lib/bioroebe/java/bioroebe/Base.class +0 -0
  211. data/lib/bioroebe/java/bioroebe/Codons.java +0 -22
  212. data/lib/bioroebe/java/bioroebe/PartnerNucleotide.class +0 -0
  213. data/lib/bioroebe/java/bioroebe/PartnerNucleotide.java +0 -19
  214. data/lib/bioroebe/java/bioroebe.jar +0 -0
  215. data/lib/bioroebe/shell/add.rb +0 -108
  216. data/lib/bioroebe/shell/assign.rb +0 -360
  217. data/lib/bioroebe/shell/chop_and_cut.rb +0 -281
  218. data/lib/bioroebe/shell/constants.rb +0 -166
  219. data/lib/bioroebe/shell/download.rb +0 -335
  220. data/lib/bioroebe/shell/enable_and_disable.rb +0 -158
  221. data/lib/bioroebe/shell/enzymes.rb +0 -310
  222. data/lib/bioroebe/shell/fasta.rb +0 -345
  223. data/lib/bioroebe/shell/gtk.rb +0 -76
  224. data/lib/bioroebe/shell/history.rb +0 -132
  225. data/lib/bioroebe/shell/initialize.rb +0 -217
  226. data/lib/bioroebe/shell/loop.rb +0 -74
  227. data/lib/bioroebe/shell/prompt.rb +0 -107
  228. data/lib/bioroebe/shell/random.rb +0 -289
  229. data/lib/bioroebe/shell/reset.rb +0 -335
  230. data/lib/bioroebe/shell/scan_and_parse.rb +0 -135
  231. data/lib/bioroebe/shell/search.rb +0 -337
  232. data/lib/bioroebe/shell/sequences.rb +0 -200
  233. data/lib/bioroebe/shell/show_report_and_display.rb +0 -2901
  234. data/lib/bioroebe/shell/startup.rb +0 -127
  235. data/lib/bioroebe/shell/taxonomy.rb +0 -14
  236. data/lib/bioroebe/shell/tk.rb +0 -23
  237. data/lib/bioroebe/shell/user_input.rb +0 -88
  238. data/lib/bioroebe/shell/xorg.rb +0 -45
  239. /data/lib/bioroebe/java/bioroebe/{BisulfiteTreatment.java → src/main/java/bioroebe/BisulfiteTreatment.java} +0 -0
  240. /data/lib/bioroebe/java/bioroebe/{Esystem.class → src/main/java/bioroebe/Esystem.class} +0 -0
  241. /data/lib/bioroebe/java/bioroebe/{Esystem.java → src/main/java/bioroebe/Esystem.java} +0 -0
  242. /data/lib/bioroebe/java/bioroebe/{RemoveFile.class → src/main/java/bioroebe/RemoveFile.class} +0 -0
@@ -19,6 +19,102 @@ module Bioroebe
19
19
  require 'bioroebe/constants/nucleotides.rb'
20
20
  require 'bioroebe/toplevel_methods/e.rb'
21
21
 
22
+ # ========================================================================= #
23
+ # === Bioroebe.can_base_pair_with?
24
+ #
25
+ # Usage example:
26
+ #
27
+ # Bioroebe.can_base_pair_with?('A','T') # => true
28
+ # Bioroebe.can_base_pair_with?('A','G') # => false
29
+ #
30
+ # ========================================================================= #
31
+ def self.can_base_pair_with?(a, b)
32
+ ::Bioroebe.partner_nucleotide(a) == b
33
+ end
34
+
35
+ # ========================================================================= #
36
+ # === Bioroebe.partner_nucleotide
37
+ #
38
+ # This small "table" will simply return the corresponding Nucleotide
39
+ # matching the given input at hand - in other words, the corresponding
40
+ # DNA nucleotide that can base-pair with the input nucleotide.
41
+ #
42
+ # Since this is a method call this may be a bit slow if you have to
43
+ # invoke the method repeatedly. In this case, you should consider
44
+ # using the method befined below, through the method
45
+ # Bioroebe.partner_nucleotide_hash(), and then use that Hash instead.
46
+ #
47
+ # Usage example:
48
+ #
49
+ # Bioroebe.partner_nucleotide('A') # => "T"
50
+ # Bioroebe.should_match_to?('T') # => "A"
51
+ #
52
+ # ========================================================================= #
53
+ def self.partner_nucleotide(i)
54
+ i = i.first if i.is_a? Array # We only handle the first entry in an Array.
55
+ if i
56
+ i = i.dup if i.frozen?
57
+ i.upcase! # just in caase.
58
+ case i # case tag.
59
+ when 'A'
60
+ return 'T'
61
+ when 'T','U'
62
+ return 'A'
63
+ when 'G'
64
+ return 'C'
65
+ when 'C'
66
+ return 'G'
67
+ else
68
+ return nil # means illegal value.
69
+ end
70
+ end
71
+ return i # Return just in case.
72
+ end; self.instance_eval { alias complementary_nucleotide partner_nucleotide } # === Bioroebe.complementary_nucleotide
73
+ self.instance_eval { alias return_dna_match partner_nucleotide } # === Bioroebe.return_dna_match
74
+ self.instance_eval { alias should_match_to? partner_nucleotide } # === Bioroebe.should_match_to?
75
+
76
+ # ========================================================================= #
77
+ # === Bioroebe.contains_an_inverted_repeat?
78
+ #
79
+ # We assume an inverted repeat to exist if at the least 2 nucleotides
80
+ # match to one another in the reverse, so a total of 4 matching
81
+ # nucleotides. This assumption may not necessarily be correct and
82
+ # we may have to fine-tune this at a later time.
83
+ #
84
+ # For testing purpose, the sequence 'TTACGAAAAAACGTAA' can be used.
85
+ # ========================================================================= #
86
+ def self.contains_an_inverted_repeat?(
87
+ #i = 'AGCCCCGCAAAAAAGGCGGGCU'
88
+ i = 'TTACGAAAAAACGTAA' # This is in the 5'→3' direction.
89
+ )
90
+ contains_an_inverted_repeat = false
91
+ longest_stretch = 0
92
+ current_stretch = 0
93
+ halfed_position = i.size / 2
94
+ both_sides = [
95
+ i[0 .. (halfed_position-1)],
96
+ i[halfed_position .. -1]
97
+ ]
98
+ # ======================================================================= #
99
+ # Now that we have both sides, we will try to match them. First reverse
100
+ # the second, though.
101
+ # ======================================================================= #
102
+ first = both_sides[0]
103
+ second = both_sides[1].reverse # Work via the reverse sequence.
104
+ first.chars.each_with_index {|this_nucleotide, index|
105
+ if can_base_pair_with?(second[index], this_nucleotide)
106
+ current_stretch += 1
107
+ longest_stretch = current_stretch if current_stretch > longest_stretch
108
+ else
109
+ current_stretch = 0
110
+ end
111
+ }
112
+ if longest_stretch >= 2
113
+ contains_an_inverted_repeat = true
114
+ end
115
+ return contains_an_inverted_repeat
116
+ end
117
+
22
118
  # ========================================================================= #
23
119
  # === Bioroebe.complementary_rna_strand
24
120
  #
@@ -147,47 +243,6 @@ module Bioroebe
147
243
  return _.flatten.uniq.sort
148
244
  end
149
245
 
150
- # ========================================================================= #
151
- # === Bioroebe.partner_nucleotide
152
- #
153
- # This small "table" will simply return the corresponding Nucleotide
154
- # matching the given input at hand - in other words, the corresponding
155
- # DNA nucleotide that can base-pair with the input nucleotide.
156
- #
157
- # Since this is a method call this may be a bit slow if you have to
158
- # invoke the method repeatedly. In this case, you should consider
159
- # using the method befined below, through the method
160
- # Bioroebe.partner_nucleotide_hash(), and then use that Hash instead.
161
- #
162
- # Usage example:
163
- #
164
- # Bioroebe.partner_nucleotide('A') # => "T"
165
- # Bioroebe.should_match_to?('T') # => "A"
166
- #
167
- # ========================================================================= #
168
- def self.partner_nucleotide(i)
169
- i = i.first if i.is_a? Array # We only handle the first entry in an Array.
170
- if i
171
- i = i.dup if i.frozen?
172
- i.upcase! # just in caase.
173
- case i # case tag.
174
- when 'A'
175
- return 'T'
176
- when 'T','U'
177
- return 'A'
178
- when 'G'
179
- return 'C'
180
- when 'C'
181
- return 'G'
182
- else
183
- return nil # means illegal value.
184
- end
185
- end
186
- return i # Return just in case.
187
- end; self.instance_eval { alias complementary_nucleotide partner_nucleotide } # === Bioroebe.complementary_nucleotide
188
- self.instance_eval { alias return_dna_match partner_nucleotide } # === Bioroebe.return_dna_match
189
- self.instance_eval { alias should_match_to? partner_nucleotide } # === Bioroebe.should_match_to?
190
-
191
246
  # ========================================================================= #
192
247
  # === Bioroebe.return_all_positions_of_this_nucleotide
193
248
  #
@@ -270,12 +325,19 @@ module Bioroebe
270
325
  # Bioroebe.random_dna 15 # => "TTGGTAAGCTCTTTA"
271
326
  # Bioroebe.random_dna 25 # => "TTAGCACAAGCATGGACGGACCAGA"
272
327
  # Bioroebe.random_dna(50, { A: 10, T: 10, C: 10, G: 70}) # => "GGGGTGGGGAGGGTATGCGGAGGAAGGGCGGGAAGGGCGGGGGCTGGGCG"
328
+ # Bioroebe.random_dna(20, 'ATGGGGGGGG') # => "TGAGGGGGGGGGTGGGAGGG"
329
+ # Bioroebe.random_dna(20, 'ATGGGGGGGG') # => "GGTAGGGGGGGGTAGGGGGG"
273
330
  #
274
331
  # ========================================================================= #
275
332
  def self.generate_random_dna_sequence(
276
- i = ARGV,
277
- optional_hash_with_the_frequencies = {}
333
+ i = ARGV,
334
+ optional_hash_with_the_frequencies = {} # ← This may be a String too, mind you.
278
335
  )
336
+ # ======================================================================= #
337
+ # First define our result-String. This one will be returned by this
338
+ # method.
339
+ # ======================================================================= #
340
+ result = ''.dup
279
341
  _ = Bioroebe::DNA_NUCLEOTIDES # Get a handle to the four DNA nucleotides.
280
342
  if i.is_a? Array
281
343
  i = i.join.strip
@@ -284,9 +346,19 @@ module Bioroebe
284
346
  when :default
285
347
  i = 250
286
348
  end
287
- i = i.to_i
288
- result = ''.dup
289
- if optional_hash_with_the_frequencies.empty?
349
+ i = i.to_i # This is "n times".
350
+ # ======================================================================= #
351
+ # First handle the case where the user passed a String:
352
+ # ======================================================================= #
353
+ if optional_hash_with_the_frequencies.is_a? String
354
+ pool = optional_hash_with_the_frequencies.dup.chars.shuffle
355
+ i.times {
356
+ if pool.size == 0
357
+ pool = optional_hash_with_the_frequencies.dup.chars.shuffle
358
+ end
359
+ result << pool.pop
360
+ }
361
+ elsif optional_hash_with_the_frequencies.empty?
290
362
  # ===================================================================== #
291
363
  # This is the default clause.
292
364
  # ===================================================================== #
@@ -18,6 +18,8 @@ module Bioroebe
18
18
  # This constant specifies the default browser to use for the
19
19
  # bioroebe-project.
20
20
  # ========================================================================= #
21
+ # /home/x/programming/ruby/src/bioroebe/lib/bioroebe/yaml/configuration/browser.yml
22
+ # ========================================================================= #
21
23
  if File.exist? "#{project_yaml_directory?}browser.yml"
22
24
  USE_THIS_BROWSER = YAML.load_file(FILE_BROWSER)
23
25
  elsif ENV['BROWSER']
@@ -115,8 +115,7 @@ module Bioroebe
115
115
  end
116
116
 
117
117
  if __FILE__ == $PROGRAM_NAME
118
- pp Bioroebe.every_reverse_palindrome_in_this_string(ARGV)
119
- exit
118
+ pp Bioroebe.every_reverse_palindrome_in_this_string(ARGV)
120
119
  if ARGV.empty?
121
120
  p 'GAATTC: '+Bioroebe.is_palindrome?('GAATTC').to_s # => true
122
121
  p 'GAATTCCC: '+Bioroebe.is_palindrome?('GAATTCCC').to_s # => false
@@ -141,8 +141,8 @@ module Taxonomy # === Bioroebe::Taxonomy
141
141
  end
142
142
  end
143
143
  if be_verbose
144
- e 'Now trying to change to the base directory at '+
145
- ::Bioroebe.sdir(this_dir)+'.'
144
+ e "Now trying to change to the base directory at "\
145
+ "#{::Bioroebe.sdir(this_dir)}."
146
146
  end
147
147
  cd this_dir
148
148
  e N+'We will next attempt to download the file `'+
@@ -11,6 +11,11 @@ module Bioroebe
11
11
  # === Bioroebe.to_camelcase
12
12
  #
13
13
  # Convert the given String (the input) into a camelcased variant.
14
+ #
15
+ # Usage example:
16
+ #
17
+ # Bioroebe.to_camelcase('foo_bar') # => "FooBar"
18
+ #
14
19
  # ========================================================================= #
15
20
  def self.to_camelcase(i)
16
21
  if i.is_a? Array
@@ -35,11 +35,6 @@ class AlignOpenReadingFrames < ::Bioroebe::CommandlineApplication # === Bioroebe
35
35
  require 'bioroebe/regexes/regexes.rb'
36
36
  require 'bioroebe/codons/codons.rb'
37
37
 
38
- # ========================================================================= #
39
- # === NAMESPACE
40
- # ========================================================================= #
41
- NAMESPACE = inspect
42
-
43
38
  # ========================================================================= #
44
39
  # === START_CODON
45
40
  # ========================================================================= #
@@ -67,10 +62,7 @@ class AlignOpenReadingFrames < ::Bioroebe::CommandlineApplication # === Bioroebe
67
62
  # ========================================================================= #
68
63
  def reset
69
64
  super()
70
- # ======================================================================= #
71
- # === @namespace
72
- # ======================================================================= #
73
- @namespace = NAMESPACE
65
+ infer_the_namespace
74
66
  end
75
67
 
76
68
  # ========================================================================= #
@@ -19,11 +19,6 @@ module Bioroebe
19
19
 
20
20
  class CheckForMismatches < ::Bioroebe::CommandlineApplication # === Bioroebe::CheckForMismatches
21
21
 
22
- # ========================================================================= #
23
- # === NAMESPACE
24
- # ========================================================================= #
25
- NAMESPACE = inspect
26
-
27
22
  # ========================================================================= #
28
23
  # === COLOUR_TO_BE_USED_FOR_A_MISMATCH
29
24
  #
@@ -49,10 +44,7 @@ class CheckForMismatches < ::Bioroebe::CommandlineApplication # === Bioroebe::Ch
49
44
  # ========================================================================= #
50
45
  def reset
51
46
  super()
52
- # ======================================================================= #
53
- # === @namespace
54
- # ======================================================================= #
55
- @namespace = NAMESPACE
47
+ infer_the_namespace
56
48
  # ======================================================================= #
57
49
  # === @first_sequence
58
50
  # ======================================================================= #
@@ -21,11 +21,6 @@ module Bioroebe
21
21
 
22
22
  class Compacter < ::Bioroebe::CommandlineApplication # === Bioroebe::Compacter
23
23
 
24
- # ========================================================================= #
25
- # === NAMESPACE
26
- # ========================================================================= #
27
- NAMESPACE = inspect
28
-
29
24
  # ========================================================================= #
30
25
  # === initialize
31
26
  # ========================================================================= #
@@ -52,10 +47,7 @@ class Compacter < ::Bioroebe::CommandlineApplication # === Bioroebe::Compacter
52
47
  # ========================================================================= #
53
48
  def reset
54
49
  super()
55
- # ======================================================================= #
56
- # === @namespace
57
- # ======================================================================= #
58
- @namespace = NAMESPACE
50
+ infer_the_namespace
59
51
  # ======================================================================= #
60
52
  # === @ask_for_user_input
61
53
  # ======================================================================= #
@@ -47,11 +47,6 @@ class Compseq < ::Bioroebe::CommandlineApplication # === Bioroebe::Compseq
47
47
  # ========================================================================= #
48
48
  COLOURIZE_CpG_ISLANDS = true
49
49
 
50
- # ========================================================================= #
51
- # === NAMESPACE
52
- # ========================================================================= #
53
- NAMESPACE = inspect
54
-
55
50
  # ========================================================================= #
56
51
  # === EXPECTED_FREQUENCY
57
52
  # ========================================================================= #
@@ -108,10 +103,7 @@ class Compseq < ::Bioroebe::CommandlineApplication # === Bioroebe::Compseq
108
103
  # ========================================================================= #
109
104
  def reset
110
105
  super()
111
- # ======================================================================= #
112
- # === @namespace
113
- # ======================================================================= #
114
- @namespace = NAMESPACE
106
+ infer_the_namespace
115
107
  # ======================================================================= #
116
108
  # === @identifier
117
109
  # ======================================================================= #
@@ -35,7 +35,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
35
35
  # ===================================================================== #
36
36
  when :do_not_run_yet_and_be_quiet
37
37
  run_already = false
38
- @be_verbose = false
38
+ set_be_quiet
39
39
  @report_the_frequencies = false
40
40
  # ===================================================================== #
41
41
  # === :do_not_run_yet
@@ -46,7 +46,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
46
46
  # === :be_quiet
47
47
  # ===================================================================== #
48
48
  when :be_quiet
49
- @be_verbose = false
49
+ set_be_quiet
50
50
  @report_the_frequencies = false
51
51
  end
52
52
  end
@@ -66,7 +66,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
66
66
  # ======================================================================= #
67
67
  # === @be_verbose
68
68
  # ======================================================================= #
69
- @be_verbose = true
69
+ set_be_verbose
70
70
  # ======================================================================= #
71
71
  # === @report_the_frequencies
72
72
  # ======================================================================= #
@@ -195,7 +195,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
195
195
  # === report_on_which_sequences_we_will_operate
196
196
  # ========================================================================= #
197
197
  def report_on_which_sequences_we_will_operate(
198
- be_verbose = @be_verbose
198
+ be_verbose = be_verbose?
199
199
  )
200
200
  case be_verbose
201
201
  when :be_verbose
@@ -217,7 +217,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
217
217
  # === report_the_consensus_sequence
218
218
  # ========================================================================= #
219
219
  def report_the_consensus_sequence
220
- if @be_verbose
220
+ if be_verbose?
221
221
  the_consensus_sequence = consensus_sequence?
222
222
  erev 'The consensus sequence is: '
223
223
  e
@@ -238,7 +238,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
238
238
  try_to_find_and_report_an_even_simpler_consensus_sequence(
239
239
  the_consensus_sequence
240
240
  )
241
- if @be_verbose
241
+ if be_verbose?
242
242
  erev 'Finally, we will display the above findings in a'
243
243
  erev 'shorter variant:'
244
244
  report_on_which_sequences_we_will_operate
@@ -44,11 +44,6 @@ https://www.ncbi.nlm.nih.gov/nuccore/NZ_CP007215.2
44
44
  https://www.ncbi.nlm.nih.gov/nuccore/NC_003197.2
45
45
  '
46
46
 
47
- # ========================================================================= #
48
- # === NAMESPACE
49
- # ========================================================================= #
50
- NAMESPACE = inspect
51
-
52
47
  # ========================================================================= #
53
48
  # === initialize
54
49
  # ========================================================================= #
@@ -66,10 +61,7 @@ https://www.ncbi.nlm.nih.gov/nuccore/NC_003197.2
66
61
  # ========================================================================= #
67
62
  def reset
68
63
  super()
69
- # ======================================================================= #
70
- # === @namespace
71
- # ======================================================================= #
72
- @namespace = NAMESPACE
64
+ infer_the_namespace
73
65
  end
74
66
 
75
67
  # ========================================================================= #
@@ -21,11 +21,6 @@ module Bioroebe
21
21
 
22
22
  class DotAlignment < ::Bioroebe::CommandlineApplication # === Bioroebe::DotAlignment
23
23
 
24
- # ========================================================================= #
25
- # === NAMESPACE
26
- # ========================================================================= #
27
- NAMESPACE = inspect
28
-
29
24
  # ========================================================================= #
30
25
  # === initialize
31
26
  # ========================================================================= #
@@ -43,10 +38,7 @@ class DotAlignment < ::Bioroebe::CommandlineApplication # === Bioroebe::DotAlign
43
38
  # ========================================================================= #
44
39
  def reset
45
40
  super()
46
- # ======================================================================= #
47
- # === @namespace
48
- # ======================================================================= #
49
- @namespace = NAMESPACE
41
+ infer_the_namespace
50
42
  # ======================================================================= #
51
43
  # === @may_we_continue
52
44
  # ======================================================================= #
@@ -42,10 +42,7 @@ class MoveFileToItsCorrectLocation < ::Bioroebe::CommandlineApplication
42
42
  # ========================================================================= #
43
43
  def reset
44
44
  super()
45
- # ======================================================================= #
46
- # === @namespace
47
- # ======================================================================= #
48
- @namespace = NAMESPACE
45
+ infer_the_namespace
49
46
  # ======================================================================= #
50
47
  # === @try_to_relocate_the_file_to_an_appropriate_subdirectory
51
48
  #
@@ -64,7 +64,7 @@ class ParseTaxonomy < ::Bioroebe::CommandlineApplication # === Bioroebe::ParseTa
64
64
  # ======================================================================= #
65
65
  # === @be_verbose
66
66
  # ======================================================================= #
67
- @be_verbose = false
67
+ set_be_quiet
68
68
  end
69
69
 
70
70
  # ========================================================================= #
@@ -112,7 +112,7 @@ class ParseTaxonomy < ::Bioroebe::CommandlineApplication # === Bioroebe::ParseTa
112
112
  # ========================================================================= #
113
113
  def read_in_url(i = @url)
114
114
  require 'open-uri'
115
- e "Reading in from #{sfancy(i.to_s)} now." if @be_verbose
115
+ e "Reading in from #{sfancy(i.to_s)} now." if be_verbose?
116
116
  @dataset = URI.open(i).read
117
117
  end
118
118
 
@@ -6,11 +6,6 @@ module Bioroebe
6
6
 
7
7
  class ShowOrf < ::Bioroebe::CommandlineApplication
8
8
 
9
- # ========================================================================= #
10
- # === NAMESPACE
11
- # ========================================================================= #
12
- NAMESPACE = inspect
13
-
14
9
  # ========================================================================= #
15
10
  # === COLOURIZE_VERTICAL_TOKEN
16
11
  # ========================================================================= #
@@ -11,10 +11,7 @@ class ShowOrf < ::Bioroebe::CommandlineApplication
11
11
  # ========================================================================= #
12
12
  def reset
13
13
  super()
14
- # ======================================================================= #
15
- # === @namespace
16
- # ======================================================================= #
17
- @namespace = NAMESPACE
14
+ infer_the_namespace
18
15
  # ======================================================================= #
19
16
  # === @show_these_frames
20
17
  #
@@ -9,7 +9,7 @@ module Bioroebe
9
9
  # ========================================================================= #
10
10
  # === VERSION
11
11
  # ========================================================================= #
12
- VERSION = '0.10.80'
12
+ VERSION = '0.12.12'
13
13
 
14
14
  # ========================================================================= #
15
15
  # === LAST_UPDATE
@@ -17,7 +17,7 @@ module Bioroebe
17
17
  # This variable keeps track as to when the bioroebe project was last
18
18
  # updated. The notation is: DD.MM.YYYY
19
19
  # ========================================================================= #
20
- LAST_UPDATE = '24.06.2022'
20
+ LAST_UPDATE = '28.01.2023'
21
21
 
22
22
  # ========================================================================= #
23
23
  # === URL_TO_THE_DOCUMENTATION