bioroebe 0.10.80 → 0.11.25

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3117 -2645
  3. data/bioroebe.gemspec +3 -3
  4. data/doc/README.gen +3116 -2644
  5. data/doc/todo/bioroebe_todo.md +418 -387
  6. data/lib/bioroebe/aminoacids/aminoacid_substitution.rb +1 -9
  7. data/lib/bioroebe/aminoacids/codon_percentage.rb +1 -9
  8. data/lib/bioroebe/aminoacids/deduce_aminoacid_sequence.rb +1 -9
  9. data/lib/bioroebe/aminoacids/display_aminoacid_table.rb +1 -0
  10. data/lib/bioroebe/aminoacids/show_hydrophobicity.rb +1 -6
  11. data/lib/bioroebe/base/colours_for_base/colours_for_base.rb +18 -8
  12. data/lib/bioroebe/base/commandline_application/commandline_arguments.rb +13 -11
  13. data/lib/bioroebe/base/commandline_application/misc.rb +18 -8
  14. data/lib/bioroebe/base/misc.rb +16 -0
  15. data/lib/bioroebe/base/prototype/misc.rb +1 -1
  16. data/lib/bioroebe/codons/show_codon_tables.rb +6 -2
  17. data/lib/bioroebe/codons/show_codon_usage.rb +2 -1
  18. data/lib/bioroebe/constants/aminoacids_and_proteins.rb +1 -0
  19. data/lib/bioroebe/constants/database_constants.rb +1 -1
  20. data/lib/bioroebe/constants/files_and_directories.rb +24 -4
  21. data/lib/bioroebe/constants/misc.rb +20 -0
  22. data/lib/bioroebe/count/count_amount_of_nucleotides.rb +3 -0
  23. data/lib/bioroebe/crystal/README.md +2 -0
  24. data/lib/bioroebe/crystal/to_rna.cr +19 -0
  25. data/lib/bioroebe/data/README.md +11 -8
  26. data/lib/bioroebe/data/electron_microscopy/pos_example.pos +396 -0
  27. data/lib/bioroebe/data/electron_microscopy/test_particles.star +36 -0
  28. data/lib/bioroebe/{shell/tk.rb → electron_microscopy/electron_microscopy_module.rb} +15 -10
  29. data/lib/bioroebe/electron_microscopy/simple_star_file_generator.rb +4 -9
  30. data/lib/bioroebe/fasta_and_fastq/show_fasta_headers.rb +27 -12
  31. data/lib/bioroebe/genome/README.md +4 -0
  32. data/lib/bioroebe/genome/genome.rb +67 -0
  33. data/lib/bioroebe/gui/gtk +1 -0
  34. data/lib/bioroebe/gui/gtk3/controller/controller.rb +45 -27
  35. data/lib/bioroebe/gui/gtk3/dna_to_aminoacid_widget/dna_to_aminoacid_widget.rb +76 -50
  36. data/lib/bioroebe/gui/gtk3/hamming_distance/hamming_distance.rb +42 -28
  37. data/lib/bioroebe/gui/gtk3/nucleotide_analyser/nucleotide_analyser.rb +119 -71
  38. data/lib/bioroebe/gui/gtk3/protein_to_DNA/protein_to_DNA.rb +18 -18
  39. data/lib/bioroebe/gui/gtk3/random_sequence/random_sequence.rb +19 -11
  40. data/lib/bioroebe/gui/shared_code/protein_to_DNA/protein_to_DNA_module.rb +14 -14
  41. data/lib/bioroebe/misc/ruler.rb +1 -0
  42. data/lib/bioroebe/parsers/genbank_parser.rb +353 -24
  43. data/lib/bioroebe/parsers/gff.rb +1 -9
  44. data/lib/bioroebe/pdb/parse_pdb_file.rb +1 -9
  45. data/lib/bioroebe/project/project.rb +1 -1
  46. data/lib/bioroebe/python/README.md +1 -0
  47. data/lib/bioroebe/python/__pycache__/mymodule.cpython-39.pyc +0 -0
  48. data/lib/bioroebe/python/gui/gtk3/all_in_one.css +4 -0
  49. data/lib/bioroebe/python/gui/gtk3/all_in_one.py +59 -0
  50. data/lib/bioroebe/python/gui/gtk3/widget1.py +20 -0
  51. data/lib/bioroebe/python/gui/tkinter/all_in_one.py +91 -0
  52. data/lib/bioroebe/python/mymodule.py +8 -0
  53. data/lib/bioroebe/python/protein_to_dna.py +33 -0
  54. data/lib/bioroebe/python/shell/shell.py +19 -0
  55. data/lib/bioroebe/python/to_rna.py +14 -0
  56. data/lib/bioroebe/python/toplevel_methods/open_in_browser.py +20 -0
  57. data/lib/bioroebe/python/toplevel_methods/palindromes.py +42 -0
  58. data/lib/bioroebe/python/toplevel_methods/rds.py +13 -0
  59. data/lib/bioroebe/python/toplevel_methods/three_delimiter.py +34 -0
  60. data/lib/bioroebe/python/toplevel_methods/time_and_date.py +43 -0
  61. data/lib/bioroebe/python/toplevel_methods/to_camelcase.py +11 -0
  62. data/lib/bioroebe/requires/require_the_bioroebe_project.rb +3 -1
  63. data/lib/bioroebe/sequence/nucleotide_module/nucleotide_module.rb +28 -25
  64. data/lib/bioroebe/sequence/protein.rb +105 -3
  65. data/lib/bioroebe/sequence/sequence.rb +61 -2
  66. data/lib/bioroebe/shell/menu.rb +3752 -3667
  67. data/lib/bioroebe/shell/misc.rb +51 -4311
  68. data/lib/bioroebe/shell/readline/readline.rb +1 -1
  69. data/lib/bioroebe/shell/shell.rb +11199 -28
  70. data/lib/bioroebe/siRNA/siRNA.rb +81 -1
  71. data/lib/bioroebe/string_matching/find_longest_substring.rb +3 -2
  72. data/lib/bioroebe/taxonomy/class_methods.rb +3 -8
  73. data/lib/bioroebe/taxonomy/constants.rb +4 -3
  74. data/lib/bioroebe/taxonomy/edit.rb +2 -1
  75. data/lib/bioroebe/taxonomy/help/help.rb +10 -10
  76. data/lib/bioroebe/taxonomy/info/check_available.rb +15 -9
  77. data/lib/bioroebe/taxonomy/info/info.rb +17 -2
  78. data/lib/bioroebe/taxonomy/info/is_dna.rb +46 -36
  79. data/lib/bioroebe/taxonomy/interactive.rb +139 -95
  80. data/lib/bioroebe/taxonomy/menu.rb +27 -18
  81. data/lib/bioroebe/taxonomy/parse_fasta.rb +3 -1
  82. data/lib/bioroebe/taxonomy/shared.rb +1 -0
  83. data/lib/bioroebe/taxonomy/taxonomy.rb +1 -0
  84. data/lib/bioroebe/toplevel_methods/aminoacids_and_proteins.rb +31 -24
  85. data/lib/bioroebe/toplevel_methods/databases.rb +1 -1
  86. data/lib/bioroebe/toplevel_methods/fasta_and_fastq.rb +101 -63
  87. data/lib/bioroebe/toplevel_methods/misc.rb +17 -16
  88. data/lib/bioroebe/toplevel_methods/nucleotides.rb +22 -5
  89. data/lib/bioroebe/toplevel_methods/open_in_browser.rb +2 -0
  90. data/lib/bioroebe/toplevel_methods/palindromes.rb +1 -2
  91. data/lib/bioroebe/toplevel_methods/taxonomy.rb +2 -2
  92. data/lib/bioroebe/toplevel_methods/to_camelcase.rb +5 -0
  93. data/lib/bioroebe/utility_scripts/align_open_reading_frames.rb +1 -9
  94. data/lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb +1 -9
  95. data/lib/bioroebe/utility_scripts/compacter.rb +1 -9
  96. data/lib/bioroebe/utility_scripts/compseq/compseq.rb +1 -9
  97. data/lib/bioroebe/utility_scripts/create_batch_entrez_file.rb +1 -9
  98. data/lib/bioroebe/utility_scripts/dot_alignment.rb +1 -9
  99. data/lib/bioroebe/utility_scripts/move_file_to_its_correct_location.rb +1 -4
  100. data/lib/bioroebe/utility_scripts/showorf/constants.rb +0 -5
  101. data/lib/bioroebe/utility_scripts/showorf/reset.rb +1 -4
  102. data/lib/bioroebe/version/version.rb +2 -2
  103. data/lib/bioroebe/www/embeddable_interface.rb +101 -52
  104. data/lib/bioroebe/www/sinatra/sinatra.rb +186 -70
  105. data/lib/bioroebe/yaml/aminoacids/amino_acids_long_name_to_one_letter.yml +2 -2
  106. data/lib/bioroebe/yaml/configuration/browser.yml +1 -1
  107. data/lib/bioroebe/yaml/genomes/README.md +3 -4
  108. data/lib/bioroebe/yaml/restriction_enzymes/restriction_enzymes.yml +3 -3
  109. metadata +33 -35
  110. data/doc/setup.rb +0 -1655
  111. data/lib/bioroebe/genbank/genbank_parser.rb +0 -291
  112. data/lib/bioroebe/shell/add.rb +0 -108
  113. data/lib/bioroebe/shell/assign.rb +0 -360
  114. data/lib/bioroebe/shell/chop_and_cut.rb +0 -281
  115. data/lib/bioroebe/shell/constants.rb +0 -166
  116. data/lib/bioroebe/shell/download.rb +0 -335
  117. data/lib/bioroebe/shell/enable_and_disable.rb +0 -158
  118. data/lib/bioroebe/shell/enzymes.rb +0 -310
  119. data/lib/bioroebe/shell/fasta.rb +0 -345
  120. data/lib/bioroebe/shell/gtk.rb +0 -76
  121. data/lib/bioroebe/shell/history.rb +0 -132
  122. data/lib/bioroebe/shell/initialize.rb +0 -217
  123. data/lib/bioroebe/shell/loop.rb +0 -74
  124. data/lib/bioroebe/shell/prompt.rb +0 -107
  125. data/lib/bioroebe/shell/random.rb +0 -289
  126. data/lib/bioroebe/shell/reset.rb +0 -335
  127. data/lib/bioroebe/shell/scan_and_parse.rb +0 -135
  128. data/lib/bioroebe/shell/search.rb +0 -337
  129. data/lib/bioroebe/shell/sequences.rb +0 -200
  130. data/lib/bioroebe/shell/show_report_and_display.rb +0 -2901
  131. data/lib/bioroebe/shell/startup.rb +0 -127
  132. data/lib/bioroebe/shell/taxonomy.rb +0 -14
  133. data/lib/bioroebe/shell/user_input.rb +0 -88
  134. data/lib/bioroebe/shell/xorg.rb +0 -45
@@ -0,0 +1,33 @@
1
+ import sys
2
+ import yaml
3
+
4
+ USE_THIS_CODON_TABLE = \
5
+ '/home/x/programming/ruby/src/bioroebe/lib/bioroebe/yaml/codon_tables/1.yml'
6
+
7
+ # =========================================================================== #
8
+ # === protein_to_dna
9
+ # =========================================================================== #
10
+ def protein_to_dna(i):
11
+ output_string = ''
12
+ yaml_dataset = None
13
+ aminoacid_sequence = list(i)
14
+
15
+ with open(USE_THIS_CODON_TABLE) as file:
16
+ # The FullLoader parameter handles the conversion from YAML
17
+ # scalar values to Python the dictionary format
18
+ yaml_dataset = yaml.load(file, Loader=yaml.FullLoader)
19
+ yaml_dataset = { value: key for key, value in yaml_dataset.items() }
20
+
21
+ for this_aminoacid in aminoacid_sequence:
22
+ # Now we must obtain the DNA sequence.
23
+ # print(yaml_dataset[this_aminoacid])
24
+ output_string += yaml_dataset[this_aminoacid]
25
+ output_string += '-'
26
+
27
+ # print(yaml_dataset)
28
+ print(output_string[0: -1]) # Remove the last character.
29
+
30
+ if __name__ == '__main__':
31
+ i = sys.argv[1]
32
+ protein_to_dna(i)
33
+ # py protein_to_dna.py KKKLLL
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/python
2
+ import sys
3
+
4
+ # =========================================================================== #
5
+ # === obtain_user_input
6
+ # =========================================================================== #
7
+ def obtain_user_input():
8
+ user_input = input("> ")
9
+ return user_input
10
+
11
+ shall_we_continue = True
12
+
13
+ while (shall_we_continue):
14
+ result = obtain_user_input
15
+ if result == "q":
16
+ shall_we_continue = False
17
+ # exit
18
+ else:
19
+ print(result)
@@ -0,0 +1,14 @@
1
+ import sys
2
+
3
+ # =========================================================================== #
4
+ # === to_rna
5
+ #
6
+ # This method will simply convert the given input, such as a
7
+ # nucleotide sequence, to RNA.
8
+ # =========================================================================== #
9
+ def to_rna(i):
10
+ converted = i.replace('T','U')
11
+ print(converted)
12
+
13
+ to_rna(sys.argv[1])
14
+ # py to_rna.py ATG
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/python3
2
+ import sys
3
+ import os
4
+
5
+ class Bioroebe(object):
6
+
7
+ # =========================================================================== #
8
+ # === open_in_browser
9
+ # =========================================================================== #
10
+ def open_in_browser(
11
+ this_url,
12
+ use_this_browser = 'firefox'
13
+ ):
14
+ cmd = use_this_browser+" -new-tab "+this_url
15
+ print(cmd)
16
+ os.system(cmd)
17
+
18
+ if __name__ == '__main__':
19
+ i = sys.argv[1]
20
+ Bioroebe.open_in_browser(i) # py open_in_browser.py "derstandard.at"
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/python3
2
+ import sys
3
+
4
+ class Bioroebe(object):
5
+
6
+ # =========================================================================== #
7
+ # === is_palindrome
8
+ # =========================================================================== #
9
+ def is_palindrome(i):
10
+ result = False
11
+ reverse_string = i[::-1]
12
+
13
+ hash = {
14
+ "A": "T",
15
+ "T": "A",
16
+ "G": "C",
17
+ "C": "G"
18
+ }
19
+
20
+ for nucleotide in i:
21
+ print(nucleotide)
22
+ if hash[nucleotide] == reverse
23
+ result
24
+ # THIS IS INCOMPLETE AS OF JULY 2022.
25
+ return result
26
+
27
+ if __name__ == '__main__':
28
+
29
+ if len(sys.argv) > 1:
30
+ i = sys.argv[1]
31
+ else:
32
+ i = "malayalam"
33
+
34
+ ans = Bioroebe.is_palindrome(i)
35
+
36
+ if ans:
37
+ print(f"Yes, {i} is a palindrome.")
38
+ else:
39
+ print(f"No, {i} is NOT a palindrome.")
40
+
41
+ # py palindromes.py "OTTO"
42
+ # py palindromes.py "GAATTC"
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/python3
2
+ import re
3
+ import sys
4
+
5
+ # =========================================================================== #
6
+ # === rds
7
+ # =========================================================================== #
8
+ def rds(i):
9
+ return re.sub('//', '/', i)
10
+
11
+ if __name__ == '__main__':
12
+ i = sys.argv[1]
13
+ print(rds(i)) # py rds.py "foobar//barfoo"
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/python3
2
+ # =========================================================================== #
3
+ import sys
4
+ import re
5
+
6
+ class Bioroebe(object):
7
+
8
+ # ========================================================================= #
9
+ # === Bioroebe.three_delimiter
10
+ #
11
+ # This method will, applied onto a String, add the '|' token
12
+ # after 3 positions.
13
+ #
14
+ # Example:
15
+ #
16
+ # Bioroebe.three_delimiter('ATGGGGATGTAGGTA') # => "ATG|GGG|ATG|TAG|GTA"
17
+ #
18
+ # ========================================================================= #
19
+ def three_delimiter(i):
20
+
21
+ if isinstance(i, list):
22
+ i = ' '.join(str(e) for e in i)
23
+
24
+ i = re.sub(r'(...)', r'\1-', i)
25
+
26
+ if i[-1] == '-': # Chop of the last character if it is a '-' token.
27
+ i = i[:-1]
28
+
29
+ return i
30
+
31
+ if __name__ == '__main__':
32
+ i = sys.argv[1]
33
+ print(Bioroebe.three_delimiter(i))
34
+ # py three_delimiter.py ATGGGGATGTAGGTA
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/python3
2
+ import sys
3
+ from datetime import datetime
4
+
5
+ class Bioroebe(object):
6
+
7
+ # ========================================================================= #
8
+ # === Bioroebe.return_current_day_month_year()
9
+ #
10
+ # This method will return a String such as "09.07.2022".
11
+ # ========================================================================= #
12
+ def return_current_day_month_year():
13
+ day = str(datetime.now().day).rjust(2, '0')
14
+ month = str(datetime.now().month).rjust(2, '0')
15
+ year = str(datetime.now().year)
16
+ return day+'.'+month+'.'+year
17
+
18
+ # ========================================================================= #
19
+ # === Bioroebe.return_current_hours_minutes_seconds()
20
+ #
21
+ # This method will return a String such as "20:44:20".
22
+ # ========================================================================= #
23
+ def return_current_hours_minutes_seconds():
24
+ hours = str(datetime.now().hour).rjust(2, '0')
25
+ minutes = str(datetime.now().minute).rjust(2, '0')
26
+ seconds = str(datetime.now().second).rjust(2, '0')
27
+ return hours+':'+minutes+':'+seconds
28
+
29
+ # ========================================================================= #
30
+ # === Bioroebe.show_time_now
31
+ #
32
+ # This method will show the current time. It will do so only if the
33
+ # verbosity-variable has been set to true.
34
+ # ========================================================================= #
35
+ def show_time_now(be_verbose = True):
36
+ time = Bioroebe.return_current_hours_minutes_seconds()
37
+ if be_verbose:
38
+ print("Showing the current time: "+time)
39
+
40
+ if __name__ == '__main__':
41
+ print(Bioroebe.return_current_day_month_year())
42
+ print(Bioroebe.return_current_hours_minutes_seconds())
43
+ Bioroebe.show_time_now()
@@ -0,0 +1,11 @@
1
+ from re import sub
2
+
3
+ # =========================================================================== #
4
+ # === camel_case
5
+ # =========================================================================== #
6
+ def camel_case(i):
7
+ i = sub(r"(_|-)+", " ", i).title().replace(" ", "")
8
+ return ''.join([i[0].upper(), i[1:]])
9
+
10
+ if __name__ == "__main__":
11
+ print(camel_case('foo_bar'))
@@ -159,4 +159,6 @@ require 'bioroebe/requires/require_all_codon_files.rb'
159
159
  # And the sinatra-interface:
160
160
  # =========================================================================== #
161
161
  # require 'bioroebe/requires/require_the_bioroebe_sinatra_components.rb'
162
- require 'bioroebe/www/sinatra/sinatra.rb'
162
+ require 'bioroebe/www/sinatra/sinatra.rb'
163
+
164
+ require 'bioroebe/sequence/protein.rb'
@@ -72,13 +72,6 @@ module NucleotideModule # === Bioroebe::NucleotideModule
72
72
  i.tr('U','T')
73
73
  end
74
74
 
75
- # ========================================================================= #
76
- # === to_dna
77
- # ========================================================================= #
78
- def to_dna
79
- seq?.tr('U','T')
80
- end; alias dna to_dna # === dna
81
-
82
75
  # ========================================================================= #
83
76
  # === n_random_dna
84
77
  #
@@ -258,24 +251,6 @@ module NucleotideModule # === Bioroebe::NucleotideModule
258
251
  ::Bioroebe.codon_to_aminoacid(codon)
259
252
  end; alias translate_aminoacid_into_dna codon_to_aminoacid # === translate_aminoacid_into_dna
260
253
 
261
- # ========================================================================= #
262
- # === to_dna
263
- #
264
- # This method will convert a RNA sequence into a DNA sequence.
265
- #
266
- # It will return the translation.
267
- #
268
- # bio; puts Bioroebe.new.to_dna('actgggcgagagklklklklk')
269
- # ========================================================================= #
270
- def to_dna(
271
- i = sequence?, upcase_me = true
272
- )
273
- if is_RNA?
274
- i = sequence? if i.nil?
275
- ::Bioroebe.to_dna(i, upcase_me)
276
- end
277
- end; alias dna to_dna # === dna
278
-
279
254
  # ========================================================================= #
280
255
  # === random
281
256
  #
@@ -397,6 +372,34 @@ module NucleotideModule # === Bioroebe::NucleotideModule
397
372
  end
398
373
  end; alias gc_percent gc_percentage # === gc_percent
399
374
 
375
+ # ========================================================================= #
376
+ # === to_dna
377
+ #
378
+ # This method will convert a RNA sequence into a DNA sequence.
379
+ #
380
+ # It will return the translation.
381
+ #
382
+ # Usage example:
383
+ #
384
+ # require 'bioroebe'; puts Bioroebe::DNA.new('actgggcgagaguuuuUUUUUU').to_dna
385
+ #
386
+ # ========================================================================= #
387
+ def to_dna(
388
+ i = sequence?,
389
+ upcase_me = true
390
+ )
391
+ i = sequence? if i.nil?
392
+ i = ::Bioroebe.to_dna(i, upcase_me)
393
+ return i
394
+ end; alias dna to_dna # === dna
395
+
396
+ # ========================================================================= #
397
+ # === to_dna
398
+ # ========================================================================= #
399
+ # def to_dna
400
+ # seq?.tr('U','T')
401
+ # end; alias dna to_dna # === dna
402
+
400
403
  end; end
401
404
 
402
405
  if __FILE__ == $PROGRAM_NAME
@@ -4,7 +4,12 @@
4
4
  # =========================================================================== #
5
5
  # === Bioroebe::Protein
6
6
  #
7
- # This is a typical sequence of aminoacids.
7
+ # This is a typical sequence of aminoacids. It is not 100% certain whether
8
+ # this class will be retained, but for the time being it will be. Note
9
+ # that peptides should also use this class - while the name may not be
10
+ # 100% accurate (smaller proteins are typically called peptides or
11
+ # oligopeptides) I feel that this is a distinction that does not really
12
+ # make a whole lot of sense.
8
13
  # =========================================================================== #
9
14
  # require 'bioroebe/sequence/protein.rb'
10
15
  # =========================================================================== #
@@ -94,6 +99,9 @@ class Protein < ::Bioroebe::Sequence # === Bioroebe::Protein
94
99
  # This method will return true if there are at the least two
95
100
  # cysteines in the aminoacid sequence of this protein.
96
101
  #
102
+ # If anyone knows of a better algorithm to determine whether
103
+ # a protein can REALLY create a disulfide bond let me know.
104
+ #
97
105
  # Usage example:
98
106
  #
99
107
  # Bioroebe::Protein.new('MLKLKNASCCEEE').can_form_disulfide_bonds? # => true
@@ -146,7 +154,7 @@ class Protein < ::Bioroebe::Sequence # === Bioroebe::Protein
146
154
  chars.each {|this_aminoacid|
147
155
  sum += weight_of(this_aminoacid)
148
156
  }
149
- sum
157
+ return sum
150
158
  end; alias molecular_weight? weight? # === molecular_weight?
151
159
 
152
160
  # ========================================================================= #
@@ -230,10 +238,99 @@ class Protein < ::Bioroebe::Sequence # === Bioroebe::Protein
230
238
  return result
231
239
  end
232
240
 
241
+ # ========================================================================= #
242
+ # === can_be_stained_via_coomassie?
243
+ #
244
+ # Determine whether a protein can be stained in a coomassie
245
+ # staining. This is just a simple, fairly dumb check and
246
+ # NOT guaranteed to be correct. If anyone has a better
247
+ # way to check for this let me know.
248
+ # ========================================================================= #
249
+ def can_be_stained_via_coomassie?
250
+ disallowed_aminoacids = %w( K H R W F Y)
251
+ sequence = sequence?
252
+ return sequence.chars.uniq.any? {|this_aminoacid|
253
+ disallowed_aminoacids.include? this_aminoacid
254
+ }
255
+ end
256
+
257
+ # ========================================================================= #
258
+ # === aliphatic_index
259
+ #
260
+ # This method will calculate the aliphatic acid of an aminoacid,
261
+ # aka a Protein.
262
+ #
263
+ # Usage example:
264
+ #
265
+ # require 'bioroebe'; Bioroebe::Protein.new('MVKSYDRYEYEDCLGIVNSKSSNCVFLNNA').aliphatic_index # => 71.33333
266
+ #
267
+ # ========================================================================= #
268
+ def aliphatic_index(
269
+ a = 2.9,
270
+ b = 3.9
271
+ )
272
+ composition = {}
273
+ composition.default = 0
274
+ chars = sequence?.chars
275
+ chars.each { |entry| composition[entry] += 1}
276
+ (
277
+ composition['A'] +
278
+ a * composition['V'].to_f +
279
+ b * (composition['I'] + composition['L'])
280
+ ).to_f / length.to_f * 100
281
+ end
282
+
283
+ # ========================================================================= #
284
+ # === Bioroebe::Protein.one_to_three
285
+ #
286
+ # Usage example:
287
+ #
288
+ # Bioroebe::Protein.one_to_three('A') # => "Ala"
289
+ #
290
+ # ========================================================================= #
291
+ def self.one_to_three(this_aminoacid = 'A')
292
+ if this_aminoacid.is_a? Array
293
+ this_aminoacid = this_aminoacid.join(' ').strip
294
+ end
295
+ return ::Bioroebe.one_to_three(this_aminoacid)
296
+ end
297
+
298
+ # ========================================================================= #
299
+ # === Bioroebe::Protein.name
300
+ #
301
+ # Usage example:
302
+ #
303
+ # Bioroebe::Protein.name('A') # => "alanine"
304
+ #
305
+ # ========================================================================= #
306
+ def self.name(this_aminoacid = 'A')
307
+ Bioroebe.return_long_name_of_this_aminoacid(this_aminoacid).downcase
308
+ end
309
+
310
+ # ========================================================================= #
311
+ # === Bioroebe::Protein.to_1
312
+ #
313
+ # This will convert from the long name of an aminoacid, such as 'alanine',
314
+ # to the short one-letter abbreviation.
315
+ #
316
+ # Usage example:
317
+ #
318
+ # Bioroebe::Protein.to_1('alanine') # => "A"
319
+ #
320
+ # ========================================================================= #
321
+ def self.to_1(this_aminoacid = 'alanine')
322
+ if this_aminoacid.is_a? Array
323
+ this_aminoacid = this_aminoacid.join(' ').strip
324
+ end
325
+ this_aminoacid.downcase!
326
+ dataset = YAML.load_file(Bioroebe.file_amino_acids_long_name_to_one_letter)
327
+ return dataset[this_aminoacid]
328
+ end
329
+
233
330
  end
234
331
 
235
332
  # =========================================================================== #
236
- # This "alias" was added in May 2022.
333
+ # The following "alias" was added in May 2022.
237
334
  # =========================================================================== #
238
335
  Aminoacids = Protein
239
336
 
@@ -267,6 +364,7 @@ end
267
364
 
268
365
  if __FILE__ == $PROGRAM_NAME
269
366
  require 'colours/autoinclude'
367
+ require 'bioroebe/toplevel_methods/verbose.rb'
270
368
  protein = Bioroebe::Protein.new(ARGV)
271
369
  e protein.weight?
272
370
  e Colours.rev+'For the aminoacid sequence:'
@@ -277,5 +375,9 @@ if __FILE__ == $PROGRAM_NAME
277
375
  e
278
376
  e " #{Colours.royalblue(protein.to_rna)}"
279
377
  e
378
+ e 'Can this protein be stained via coomassie brilliant blue?:'
379
+ e
380
+ e " #{lightblue(Bioroebe::VerboseTruth[protein.can_be_stained_via_coomassie?])}"
381
+ e
280
382
  end # protein MAC
281
383
  # protein MACCCCAAAAAKKKKLLLLL
@@ -188,6 +188,27 @@ class Sequence < ::Bioroebe::RawSequence
188
188
  @internal_hash[:type]
189
189
  end; alias type type? # === type
190
190
 
191
+ # ========================================================================= #
192
+ # === index
193
+ # ========================================================================= #
194
+ def index(i)
195
+ @sequence.index(i)
196
+ end
197
+
198
+ # ========================================================================= #
199
+ # === map
200
+ # ========================================================================= #
201
+ def map(&block)
202
+ @sequence.map(&block)
203
+ end
204
+
205
+ # ========================================================================= #
206
+ # === size?
207
+ # ========================================================================= #
208
+ def size?
209
+ @sequence.size
210
+ end
211
+
191
212
  # ========================================================================= #
192
213
  # === to_regexp
193
214
  #
@@ -334,7 +355,7 @@ class Sequence < ::Bioroebe::RawSequence
334
355
  # ===================================================================== #
335
356
  sequence?.tr!('T','U') if sequence?
336
357
  end
337
- end
358
+ end; alias normalize sanitize_dataset # === normalize
338
359
 
339
360
  # ========================================================================= #
340
361
  # === set_type
@@ -484,7 +505,8 @@ class Sequence < ::Bioroebe::RawSequence
484
505
  # ===================================================================== #
485
506
  # === :do_not_downcase
486
507
  # ===================================================================== #
487
- when :do_not_downcase
508
+ when :do_not_downcase,
509
+ :make_no_modification
488
510
  # Make no modification in this case.
489
511
  # ===================================================================== #
490
512
  # === :do_upcase
@@ -526,6 +548,16 @@ class Sequence < ::Bioroebe::RawSequence
526
548
  end; alias set_rna_type set_rna # === set_rna_type
527
549
  alias convert_to_rna set_rna # === convert_to_rna
528
550
 
551
+ # ========================================================================= #
552
+ # === automatic_support_for_nucleotides
553
+ #
554
+ # This adds automatic support for RNA and DNA to this sequence object.
555
+ # ========================================================================= #
556
+ def automatic_support_for_nucleotides
557
+ require 'bioroebe/sequence/nucleotide_module/nucleotide_module.rb'
558
+ extend(Bioroebe::NucleotideModule)
559
+ end
560
+
529
561
  # ========================================================================= #
530
562
  # === set_dna
531
563
  # ========================================================================= #
@@ -544,6 +576,33 @@ class Sequence < ::Bioroebe::RawSequence
544
576
  }.join
545
577
  end
546
578
 
579
+ # ========================================================================= #
580
+ # === remove_invalid_entries_from_the_dna_sequence!
581
+ # ========================================================================= #
582
+ def remove_invalid_entries_from_the_dna_sequence!(i = sequence?)
583
+ result = i.chars.select {|character|
584
+ DNA_NUCLEOTIDES.include? character.upcase
585
+ }.join
586
+ set_sequence(result)
587
+ end
588
+
589
+ # ========================================================================= #
590
+ # === randomize
591
+ #
592
+ # Usage example:
593
+ #
594
+ # x = Bioroebe::Sequence.new; x.randomize
595
+ #
596
+ # ========================================================================= #
597
+ def randomize(
598
+ i = { 'A'=>1,'C'=>2,'G'=>3,'T'=>4 }
599
+ )
600
+ if i.is_a? Hash
601
+ i = i.map{|key, value| "#{key * value}" }.join
602
+ end
603
+ ::Bioroebe.random_dna(size?, i) # => "GGTAGGGGGGGGTAGGGGGG"
604
+ end
605
+
547
606
  # ========================================================================= #
548
607
  # === Bioroebe::Sequence.sequence_from_file
549
608
  #