bioroebe 0.10.80 → 0.11.24

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 (129) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1204 -772
  3. data/bioroebe.gemspec +3 -3
  4. data/doc/README.gen +1203 -771
  5. data/doc/todo/bioroebe_todo.md +391 -365
  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 +20 -1
  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/gtk3/protein_to_DNA/protein_to_DNA.rb +18 -18
  34. data/lib/bioroebe/gui/gtk3/random_sequence/random_sequence.rb +19 -11
  35. data/lib/bioroebe/gui/shared_code/protein_to_DNA/protein_to_DNA_module.rb +14 -14
  36. data/lib/bioroebe/misc/ruler.rb +1 -0
  37. data/lib/bioroebe/parsers/genbank_parser.rb +353 -24
  38. data/lib/bioroebe/parsers/gff.rb +1 -9
  39. data/lib/bioroebe/pdb/parse_pdb_file.rb +1 -9
  40. data/lib/bioroebe/project/project.rb +1 -1
  41. data/lib/bioroebe/python/README.md +1 -0
  42. data/lib/bioroebe/python/__pycache__/mymodule.cpython-39.pyc +0 -0
  43. data/lib/bioroebe/python/gui/gtk3/all_in_one.css +4 -0
  44. data/lib/bioroebe/python/gui/gtk3/all_in_one.py +59 -0
  45. data/lib/bioroebe/python/gui/gtk3/widget1.py +20 -0
  46. data/lib/bioroebe/python/gui/tkinter/all_in_one.py +91 -0
  47. data/lib/bioroebe/python/mymodule.py +8 -0
  48. data/lib/bioroebe/python/protein_to_dna.py +33 -0
  49. data/lib/bioroebe/python/shell/shell.py +19 -0
  50. data/lib/bioroebe/python/to_rna.py +14 -0
  51. data/lib/bioroebe/python/toplevel_methods/open_in_browser.py +20 -0
  52. data/lib/bioroebe/python/toplevel_methods/palindromes.py +42 -0
  53. data/lib/bioroebe/python/toplevel_methods/rds.py +13 -0
  54. data/lib/bioroebe/python/toplevel_methods/three_delimiter.py +34 -0
  55. data/lib/bioroebe/python/toplevel_methods/time_and_date.py +43 -0
  56. data/lib/bioroebe/python/toplevel_methods/to_camelcase.py +11 -0
  57. data/lib/bioroebe/requires/require_the_bioroebe_project.rb +3 -1
  58. data/lib/bioroebe/sequence/nucleotide_module/nucleotide_module.rb +28 -25
  59. data/lib/bioroebe/sequence/protein.rb +105 -3
  60. data/lib/bioroebe/sequence/sequence.rb +61 -2
  61. data/lib/bioroebe/shell/menu.rb +3451 -3366
  62. data/lib/bioroebe/shell/misc.rb +51 -4311
  63. data/lib/bioroebe/shell/readline/readline.rb +1 -1
  64. data/lib/bioroebe/shell/shell.rb +11192 -28
  65. data/lib/bioroebe/siRNA/siRNA.rb +81 -1
  66. data/lib/bioroebe/string_matching/find_longest_substring.rb +3 -2
  67. data/lib/bioroebe/taxonomy/class_methods.rb +3 -8
  68. data/lib/bioroebe/taxonomy/constants.rb +4 -3
  69. data/lib/bioroebe/taxonomy/edit.rb +2 -1
  70. data/lib/bioroebe/taxonomy/help/help.rb +10 -10
  71. data/lib/bioroebe/taxonomy/info/check_available.rb +15 -9
  72. data/lib/bioroebe/taxonomy/info/info.rb +17 -2
  73. data/lib/bioroebe/taxonomy/info/is_dna.rb +46 -36
  74. data/lib/bioroebe/taxonomy/interactive.rb +139 -95
  75. data/lib/bioroebe/taxonomy/menu.rb +27 -18
  76. data/lib/bioroebe/taxonomy/parse_fasta.rb +3 -1
  77. data/lib/bioroebe/taxonomy/shared.rb +1 -0
  78. data/lib/bioroebe/taxonomy/taxonomy.rb +1 -0
  79. data/lib/bioroebe/toplevel_methods/aminoacids_and_proteins.rb +31 -24
  80. data/lib/bioroebe/toplevel_methods/databases.rb +1 -1
  81. data/lib/bioroebe/toplevel_methods/fasta_and_fastq.rb +101 -63
  82. data/lib/bioroebe/toplevel_methods/misc.rb +17 -16
  83. data/lib/bioroebe/toplevel_methods/nucleotides.rb +22 -5
  84. data/lib/bioroebe/toplevel_methods/open_in_browser.rb +2 -0
  85. data/lib/bioroebe/toplevel_methods/palindromes.rb +1 -2
  86. data/lib/bioroebe/toplevel_methods/taxonomy.rb +2 -2
  87. data/lib/bioroebe/toplevel_methods/to_camelcase.rb +5 -0
  88. data/lib/bioroebe/utility_scripts/align_open_reading_frames.rb +1 -9
  89. data/lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb +1 -9
  90. data/lib/bioroebe/utility_scripts/compacter.rb +1 -9
  91. data/lib/bioroebe/utility_scripts/compseq/compseq.rb +1 -9
  92. data/lib/bioroebe/utility_scripts/create_batch_entrez_file.rb +1 -9
  93. data/lib/bioroebe/utility_scripts/dot_alignment.rb +1 -9
  94. data/lib/bioroebe/utility_scripts/move_file_to_its_correct_location.rb +1 -4
  95. data/lib/bioroebe/utility_scripts/showorf/constants.rb +0 -5
  96. data/lib/bioroebe/utility_scripts/showorf/reset.rb +1 -4
  97. data/lib/bioroebe/version/version.rb +2 -2
  98. data/lib/bioroebe/www/embeddable_interface.rb +101 -52
  99. data/lib/bioroebe/www/sinatra/sinatra.rb +186 -70
  100. data/lib/bioroebe/yaml/aminoacids/amino_acids_long_name_to_one_letter.yml +2 -2
  101. data/lib/bioroebe/yaml/configuration/browser.yml +1 -1
  102. data/lib/bioroebe/yaml/genomes/README.md +3 -4
  103. data/lib/bioroebe/yaml/restriction_enzymes/restriction_enzymes.yml +3 -3
  104. metadata +32 -35
  105. data/doc/setup.rb +0 -1655
  106. data/lib/bioroebe/genbank/genbank_parser.rb +0 -291
  107. data/lib/bioroebe/shell/add.rb +0 -108
  108. data/lib/bioroebe/shell/assign.rb +0 -360
  109. data/lib/bioroebe/shell/chop_and_cut.rb +0 -281
  110. data/lib/bioroebe/shell/constants.rb +0 -166
  111. data/lib/bioroebe/shell/download.rb +0 -335
  112. data/lib/bioroebe/shell/enable_and_disable.rb +0 -158
  113. data/lib/bioroebe/shell/enzymes.rb +0 -310
  114. data/lib/bioroebe/shell/fasta.rb +0 -345
  115. data/lib/bioroebe/shell/gtk.rb +0 -76
  116. data/lib/bioroebe/shell/history.rb +0 -132
  117. data/lib/bioroebe/shell/initialize.rb +0 -217
  118. data/lib/bioroebe/shell/loop.rb +0 -74
  119. data/lib/bioroebe/shell/prompt.rb +0 -107
  120. data/lib/bioroebe/shell/random.rb +0 -289
  121. data/lib/bioroebe/shell/reset.rb +0 -335
  122. data/lib/bioroebe/shell/scan_and_parse.rb +0 -135
  123. data/lib/bioroebe/shell/search.rb +0 -337
  124. data/lib/bioroebe/shell/sequences.rb +0 -200
  125. data/lib/bioroebe/shell/show_report_and_display.rb +0 -2901
  126. data/lib/bioroebe/shell/startup.rb +0 -127
  127. data/lib/bioroebe/shell/taxonomy.rb +0 -14
  128. data/lib/bioroebe/shell/user_input.rb +0 -88
  129. data/lib/bioroebe/shell/xorg.rb +0 -45
@@ -0,0 +1,59 @@
1
+ import gi
2
+ #import cairo
3
+ #from gi.repository import PangoCairo
4
+
5
+ gi.require_version("Gtk", "3.0")
6
+ from gi.repository import Gtk, Gdk, GLib
7
+
8
+ gi.require_version('Pango', '1.0')
9
+ from gi.repository import Pango
10
+
11
+ class MyWindow(Gtk.Window):
12
+
13
+ def __init__(self):
14
+ super().__init__(title="Hello World")
15
+
16
+ self.set_title("Bioroebe - all in one")
17
+ self.set_default_size(1400, 800)
18
+
19
+ #self.override_font(Pango.FontDescription("Times New Roman Italic 20"))
20
+ # ^^^ this is deprecated
21
+ outer_vbox = Gtk.Box.new(Gtk.Orientation.VERTICAL, spacing = 5)
22
+
23
+ top_hbox = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, spacing = 5)
24
+
25
+ label = Gtk.Label(label="Time: ")
26
+ label.set_halign(Gtk.Align.END) # Right-align.
27
+ top_hbox.add(label)
28
+ outer_vbox.add(top_hbox)
29
+
30
+ self.button = Gtk.Button(label="Click Here")
31
+ self.button.connect("clicked", self.on_button_clicked)
32
+ outer_vbox.add(self.button)
33
+ # Bioroebe.return_current_day_month_year()
34
+
35
+ self.add(outer_vbox)
36
+ self.apply_css()
37
+
38
+ def apply_css(self):
39
+ screen = Gdk.Screen.get_default()
40
+ css_provider = Gtk.CssProvider()
41
+ try:
42
+ css_provider.load_from_path('all_in_one.css')
43
+ context = Gtk.StyleContext()
44
+ context.add_provider_for_screen(screen, css_provider,
45
+ Gtk.STYLE_PROVIDER_PRIORITY_USER)
46
+ except GLib.Error as e:
47
+ print(f"Error in theme: {e} ")
48
+
49
+ def en(self, i = ""):
50
+ print(i)
51
+
52
+ def on_button_clicked(self, widget):
53
+ self.en("Hello there.")
54
+
55
+ win = MyWindow()
56
+ win.move(0, 0)
57
+ win.connect("destroy", Gtk.main_quit)
58
+ win.show_all()
59
+ Gtk.main()
@@ -0,0 +1,20 @@
1
+ import gi
2
+
3
+ gi.require_version("Gtk", "3.0")
4
+ from gi.repository import Gtk
5
+
6
+ class MyWindow(Gtk.Window):
7
+ def __init__(self):
8
+ super().__init__(title="Hello World")
9
+
10
+ self.button = Gtk.Button(label="Click Here")
11
+ self.button.connect("clicked", self.on_button_clicked)
12
+ self.add(self.button)
13
+
14
+ def on_button_clicked(self, widget):
15
+ print("Hello World")
16
+
17
+ win = MyWindow()
18
+ win.connect("destroy", Gtk.main_quit)
19
+ win.show_all()
20
+ Gtk.main()
@@ -0,0 +1,91 @@
1
+ import sys
2
+ import os
3
+ import importlib
4
+
5
+ from tkinter import *
6
+ from tkinter import ttk
7
+ from tkinter.ttk import Label
8
+ from tkinter import messagebox
9
+
10
+ sys.path.append(".")
11
+
12
+ # sys.path.append("../../") # Adds higher directory to python modules path.
13
+
14
+ # from ../.. import protein_to_dna
15
+ # module_name = "../../protein_to_dna"
16
+ # importlib.import_module(module_name, package='Bioroebe')
17
+
18
+ # sys.path.append(os.path.abspath("/home/x/programming/ruby/src/bioroebe/lib/bioroebe/python/"))
19
+ # from protein_to_dny import *
20
+
21
+ class App:
22
+
23
+ # ========================================================================= #
24
+ # === TITLE
25
+ # ========================================================================= #
26
+ TITLE = "Bioroebe: all in one"
27
+
28
+ # ========================================================================= #
29
+ # === FONT_TO_USE
30
+ # ========================================================================= #
31
+ FONT_TO_USE = 'Hack' # 'Arial'
32
+
33
+ # ========================================================================= #
34
+ # === FONT_SIZE_TO_USE
35
+ # ========================================================================= #
36
+ FONT_SIZE_TO_USE = 28
37
+
38
+ # ========================================================================= #
39
+ # === SMALLER_FONT_SIZE_TO_USE
40
+ # ========================================================================= #
41
+ SMALLER_FONT_SIZE_TO_USE = 22
42
+
43
+ # ========================================================================= #
44
+ # === __init__
45
+ # ========================================================================= #
46
+ def __init__(self, master):
47
+ # Instantiating master i.e toplevel Widget
48
+ self.master = master
49
+ self.create_and_add_header()
50
+ self.create_and_add_the_button_for_the_protein_to_DNA_conversion()
51
+
52
+ # ========================================================================= #
53
+ # === do_the_conversion_from_protein_to_DNA
54
+ # ========================================================================= #
55
+ def do_the_conversion_from_protein_to_DNA(self):
56
+ messagebox.showinfo("Message","Hey There! I hope you are doing well.")
57
+
58
+ # ========================================================================= #
59
+ # === create_and_add_the_button_for_the_protein_to_DNA_conversion()
60
+ # ========================================================================= #
61
+ def create_and_add_the_button_for_the_protein_to_DNA_conversion(self):
62
+ Button(self.master,
63
+ text="Convert from protein sequence to DNA sequence",
64
+ font = (App.FONT_TO_USE, App.SMALLER_FONT_SIZE_TO_USE),
65
+ command = lambda: self.do_the_conversion_from_protein_to_DNA()
66
+ ).pack(pady = 5)
67
+
68
+ # ========================================================================= #
69
+ # === create_and_add_header
70
+ # ========================================================================= #
71
+ def create_and_add_header(self):
72
+ # Creating second label
73
+ # This label has a font-family of Arial
74
+ # and font-size of 25
75
+ Label(self.master,
76
+ text = "Protein to DNA conversion:",
77
+ font = (App.FONT_TO_USE, App.FONT_SIZE_TO_USE) # Changing font-size here
78
+ ).pack(padx = 12, pady = 12, anchor = "w") # Align to the left side.
79
+
80
+ if __name__ == "__main__":
81
+ root = Tk()
82
+ root.title(App.TITLE) # Setting the title of the window
83
+ root.geometry("1400x800") # Set width and height - aka the geometry/dimensions.
84
+ app = App(root) # Calling our App
85
+ root.mainloop() # Mainloop which will cause this toplevel to run infinitely
86
+
87
+ # frm = ttk.Frame(root, padding = 12)
88
+ # frm.grid()
89
+ # ttk.Label(frm, text="Hello World!").grid(column=0, row=0)
90
+ # ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0)
91
+ # root.mainloop()
@@ -0,0 +1,8 @@
1
+ def greeting(name):
2
+ print("Hello, " + name)
3
+
4
+ person1 = {
5
+ "name": "John",
6
+ "age": 36,
7
+ "country": "Norway"
8
+ }
@@ -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