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.
- checksums.yaml +4 -4
- data/README.md +3117 -2645
- data/bioroebe.gemspec +3 -3
- data/doc/README.gen +3116 -2644
- data/doc/todo/bioroebe_todo.md +418 -387
- data/lib/bioroebe/aminoacids/aminoacid_substitution.rb +1 -9
- data/lib/bioroebe/aminoacids/codon_percentage.rb +1 -9
- data/lib/bioroebe/aminoacids/deduce_aminoacid_sequence.rb +1 -9
- data/lib/bioroebe/aminoacids/display_aminoacid_table.rb +1 -0
- data/lib/bioroebe/aminoacids/show_hydrophobicity.rb +1 -6
- data/lib/bioroebe/base/colours_for_base/colours_for_base.rb +18 -8
- data/lib/bioroebe/base/commandline_application/commandline_arguments.rb +13 -11
- data/lib/bioroebe/base/commandline_application/misc.rb +18 -8
- data/lib/bioroebe/base/misc.rb +16 -0
- data/lib/bioroebe/base/prototype/misc.rb +1 -1
- data/lib/bioroebe/codons/show_codon_tables.rb +6 -2
- data/lib/bioroebe/codons/show_codon_usage.rb +2 -1
- data/lib/bioroebe/constants/aminoacids_and_proteins.rb +1 -0
- data/lib/bioroebe/constants/database_constants.rb +1 -1
- data/lib/bioroebe/constants/files_and_directories.rb +24 -4
- data/lib/bioroebe/constants/misc.rb +20 -0
- data/lib/bioroebe/count/count_amount_of_nucleotides.rb +3 -0
- data/lib/bioroebe/crystal/README.md +2 -0
- data/lib/bioroebe/crystal/to_rna.cr +19 -0
- data/lib/bioroebe/data/README.md +11 -8
- data/lib/bioroebe/data/electron_microscopy/pos_example.pos +396 -0
- data/lib/bioroebe/data/electron_microscopy/test_particles.star +36 -0
- data/lib/bioroebe/{shell/tk.rb → electron_microscopy/electron_microscopy_module.rb} +15 -10
- data/lib/bioroebe/electron_microscopy/simple_star_file_generator.rb +4 -9
- data/lib/bioroebe/fasta_and_fastq/show_fasta_headers.rb +27 -12
- data/lib/bioroebe/genome/README.md +4 -0
- data/lib/bioroebe/genome/genome.rb +67 -0
- data/lib/bioroebe/gui/gtk +1 -0
- data/lib/bioroebe/gui/gtk3/controller/controller.rb +45 -27
- data/lib/bioroebe/gui/gtk3/dna_to_aminoacid_widget/dna_to_aminoacid_widget.rb +76 -50
- data/lib/bioroebe/gui/gtk3/hamming_distance/hamming_distance.rb +42 -28
- data/lib/bioroebe/gui/gtk3/nucleotide_analyser/nucleotide_analyser.rb +119 -71
- data/lib/bioroebe/gui/gtk3/protein_to_DNA/protein_to_DNA.rb +18 -18
- data/lib/bioroebe/gui/gtk3/random_sequence/random_sequence.rb +19 -11
- data/lib/bioroebe/gui/shared_code/protein_to_DNA/protein_to_DNA_module.rb +14 -14
- data/lib/bioroebe/misc/ruler.rb +1 -0
- data/lib/bioroebe/parsers/genbank_parser.rb +353 -24
- data/lib/bioroebe/parsers/gff.rb +1 -9
- data/lib/bioroebe/pdb/parse_pdb_file.rb +1 -9
- data/lib/bioroebe/project/project.rb +1 -1
- data/lib/bioroebe/python/README.md +1 -0
- data/lib/bioroebe/python/__pycache__/mymodule.cpython-39.pyc +0 -0
- data/lib/bioroebe/python/gui/gtk3/all_in_one.css +4 -0
- data/lib/bioroebe/python/gui/gtk3/all_in_one.py +59 -0
- data/lib/bioroebe/python/gui/gtk3/widget1.py +20 -0
- data/lib/bioroebe/python/gui/tkinter/all_in_one.py +91 -0
- data/lib/bioroebe/python/mymodule.py +8 -0
- data/lib/bioroebe/python/protein_to_dna.py +33 -0
- data/lib/bioroebe/python/shell/shell.py +19 -0
- data/lib/bioroebe/python/to_rna.py +14 -0
- data/lib/bioroebe/python/toplevel_methods/open_in_browser.py +20 -0
- data/lib/bioroebe/python/toplevel_methods/palindromes.py +42 -0
- data/lib/bioroebe/python/toplevel_methods/rds.py +13 -0
- data/lib/bioroebe/python/toplevel_methods/three_delimiter.py +34 -0
- data/lib/bioroebe/python/toplevel_methods/time_and_date.py +43 -0
- data/lib/bioroebe/python/toplevel_methods/to_camelcase.py +11 -0
- data/lib/bioroebe/requires/require_the_bioroebe_project.rb +3 -1
- data/lib/bioroebe/sequence/nucleotide_module/nucleotide_module.rb +28 -25
- data/lib/bioroebe/sequence/protein.rb +105 -3
- data/lib/bioroebe/sequence/sequence.rb +61 -2
- data/lib/bioroebe/shell/menu.rb +3752 -3667
- data/lib/bioroebe/shell/misc.rb +51 -4311
- data/lib/bioroebe/shell/readline/readline.rb +1 -1
- data/lib/bioroebe/shell/shell.rb +11199 -28
- data/lib/bioroebe/siRNA/siRNA.rb +81 -1
- data/lib/bioroebe/string_matching/find_longest_substring.rb +3 -2
- data/lib/bioroebe/taxonomy/class_methods.rb +3 -8
- data/lib/bioroebe/taxonomy/constants.rb +4 -3
- data/lib/bioroebe/taxonomy/edit.rb +2 -1
- data/lib/bioroebe/taxonomy/help/help.rb +10 -10
- data/lib/bioroebe/taxonomy/info/check_available.rb +15 -9
- data/lib/bioroebe/taxonomy/info/info.rb +17 -2
- data/lib/bioroebe/taxonomy/info/is_dna.rb +46 -36
- data/lib/bioroebe/taxonomy/interactive.rb +139 -95
- data/lib/bioroebe/taxonomy/menu.rb +27 -18
- data/lib/bioroebe/taxonomy/parse_fasta.rb +3 -1
- data/lib/bioroebe/taxonomy/shared.rb +1 -0
- data/lib/bioroebe/taxonomy/taxonomy.rb +1 -0
- data/lib/bioroebe/toplevel_methods/aminoacids_and_proteins.rb +31 -24
- data/lib/bioroebe/toplevel_methods/databases.rb +1 -1
- data/lib/bioroebe/toplevel_methods/fasta_and_fastq.rb +101 -63
- data/lib/bioroebe/toplevel_methods/misc.rb +17 -16
- data/lib/bioroebe/toplevel_methods/nucleotides.rb +22 -5
- data/lib/bioroebe/toplevel_methods/open_in_browser.rb +2 -0
- data/lib/bioroebe/toplevel_methods/palindromes.rb +1 -2
- data/lib/bioroebe/toplevel_methods/taxonomy.rb +2 -2
- data/lib/bioroebe/toplevel_methods/to_camelcase.rb +5 -0
- data/lib/bioroebe/utility_scripts/align_open_reading_frames.rb +1 -9
- data/lib/bioroebe/utility_scripts/check_for_mismatches/check_for_mismatches.rb +1 -9
- data/lib/bioroebe/utility_scripts/compacter.rb +1 -9
- data/lib/bioroebe/utility_scripts/compseq/compseq.rb +1 -9
- data/lib/bioroebe/utility_scripts/create_batch_entrez_file.rb +1 -9
- data/lib/bioroebe/utility_scripts/dot_alignment.rb +1 -9
- data/lib/bioroebe/utility_scripts/move_file_to_its_correct_location.rb +1 -4
- data/lib/bioroebe/utility_scripts/showorf/constants.rb +0 -5
- data/lib/bioroebe/utility_scripts/showorf/reset.rb +1 -4
- data/lib/bioroebe/version/version.rb +2 -2
- data/lib/bioroebe/www/embeddable_interface.rb +101 -52
- data/lib/bioroebe/www/sinatra/sinatra.rb +186 -70
- data/lib/bioroebe/yaml/aminoacids/amino_acids_long_name_to_one_letter.yml +2 -2
- data/lib/bioroebe/yaml/configuration/browser.yml +1 -1
- data/lib/bioroebe/yaml/genomes/README.md +3 -4
- data/lib/bioroebe/yaml/restriction_enzymes/restriction_enzymes.yml +3 -3
- metadata +33 -35
- data/doc/setup.rb +0 -1655
- data/lib/bioroebe/genbank/genbank_parser.rb +0 -291
- data/lib/bioroebe/shell/add.rb +0 -108
- data/lib/bioroebe/shell/assign.rb +0 -360
- data/lib/bioroebe/shell/chop_and_cut.rb +0 -281
- data/lib/bioroebe/shell/constants.rb +0 -166
- data/lib/bioroebe/shell/download.rb +0 -335
- data/lib/bioroebe/shell/enable_and_disable.rb +0 -158
- data/lib/bioroebe/shell/enzymes.rb +0 -310
- data/lib/bioroebe/shell/fasta.rb +0 -345
- data/lib/bioroebe/shell/gtk.rb +0 -76
- data/lib/bioroebe/shell/history.rb +0 -132
- data/lib/bioroebe/shell/initialize.rb +0 -217
- data/lib/bioroebe/shell/loop.rb +0 -74
- data/lib/bioroebe/shell/prompt.rb +0 -107
- data/lib/bioroebe/shell/random.rb +0 -289
- data/lib/bioroebe/shell/reset.rb +0 -335
- data/lib/bioroebe/shell/scan_and_parse.rb +0 -135
- data/lib/bioroebe/shell/search.rb +0 -337
- data/lib/bioroebe/shell/sequences.rb +0 -200
- data/lib/bioroebe/shell/show_report_and_display.rb +0 -2901
- data/lib/bioroebe/shell/startup.rb +0 -127
- data/lib/bioroebe/shell/taxonomy.rb +0 -14
- data/lib/bioroebe/shell/user_input.rb +0 -88
- 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
|
-
#
|
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
|
#
|