bioroebe 0.10.80 → 0.12.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3946 -2817
- data/bin/bioroebe +13 -2
- data/bin/bioroebe_hash +7 -0
- data/bin/codon_to_aminoacid +6 -4
- data/bin/compacter +7 -0
- data/bin/plain_palindrome +7 -0
- data/bioroebe.gemspec +3 -3
- data/doc/README.gen +3918 -2793
- data/doc/quality_control/commandline_applications.md +3 -3
- data/doc/statistics/statistics.md +7 -7
- data/doc/todo/bioroebe_GUI_todo.md +19 -14
- data/doc/todo/bioroebe_java_todo.md +22 -0
- data/doc/todo/bioroebe_todo.md +2075 -2620
- data/lib/bioroebe/C++/DNA.cpp +69 -0
- data/lib/bioroebe/C++/RNA.cpp +58 -0
- data/lib/bioroebe/C++/sequence.cpp +35 -0
- data/lib/bioroebe/abstract/README.md +1 -0
- data/lib/bioroebe/abstract/features.rb +29 -0
- 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/base_module/base_module.rb +36 -0
- data/lib/bioroebe/base/colours_for_base/colours_for_base.rb +18 -8
- data/lib/bioroebe/base/commandline_application/commandline_application.rb +13 -9
- data/lib/bioroebe/base/commandline_application/commandline_arguments.rb +24 -19
- data/lib/bioroebe/base/commandline_application/misc.rb +66 -49
- data/lib/bioroebe/base/commandline_application/opn.rb +8 -8
- data/lib/bioroebe/base/commandline_application/reset.rb +5 -3
- data/lib/bioroebe/base/internal_hash_module/internal_hash_module.rb +42 -0
- data/lib/bioroebe/base/misc.rb +35 -0
- data/lib/bioroebe/base/prototype/misc.rb +15 -9
- data/lib/bioroebe/base/prototype/reset.rb +10 -0
- data/lib/bioroebe/cleave_and_digest/digestion.rb +10 -2
- data/lib/bioroebe/cleave_and_digest/trypsin.rb +104 -50
- data/lib/bioroebe/codon_tables/frequencies/parse_frequency_table.rb +2 -10
- data/lib/bioroebe/codons/codons.rb +1 -1
- data/lib/bioroebe/codons/convert_this_codon_to_that_aminoacid.rb +208 -59
- data/lib/bioroebe/codons/possible_codons_for_this_aminoacid.rb +1 -9
- data/lib/bioroebe/codons/show_codon_tables.rb +8 -3
- data/lib/bioroebe/codons/show_codon_usage.rb +15 -4
- data/lib/bioroebe/colours/rev.rb +4 -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 +31 -4
- data/lib/bioroebe/constants/misc.rb +20 -0
- data/lib/bioroebe/constants/nucleotides.rb +7 -0
- data/lib/bioroebe/conversions/dna_to_aminoacid_sequence.rb +109 -39
- data/lib/bioroebe/count/count_amount_of_aminoacids.rb +3 -2
- data/lib/bioroebe/count/count_amount_of_nucleotides.rb +3 -0
- data/lib/bioroebe/cpp +1 -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/data/fasta/human/Homo_sapiens_hemoglobin_subunit_alpha_HBB_mRNA.fasta +9 -0
- data/lib/bioroebe/data/fasta/human/Homo_sapiens_hemoglobin_subunit_beta_HBB_mRNA.fasta +8 -0
- data/lib/bioroebe/data/fasta/human/README.md +2 -0
- data/lib/bioroebe/dotplots/advanced_dotplot.rb +1 -1
- data/lib/bioroebe/electron_microscopy/coordinate_analyzer.rb +15 -18
- data/lib/bioroebe/{fasta_and_fastq/parse_fasta/run.rb → electron_microscopy/electron_microscopy_module.rb} +16 -8
- data/lib/bioroebe/electron_microscopy/fix_pos_file.rb +1 -9
- data/lib/bioroebe/electron_microscopy/flipy.rb +83 -0
- data/lib/bioroebe/electron_microscopy/parse_coordinates.rb +2 -10
- data/lib/bioroebe/electron_microscopy/read_file_xmd.rb +1 -9
- data/lib/bioroebe/electron_microscopy/simple_star_file_generator.rb +4 -9
- data/lib/bioroebe/enzymes/has_this_restriction_enzyme.rb +10 -3
- data/lib/bioroebe/enzymes/restriction_enzyme.rb +23 -1
- data/lib/bioroebe/enzymes/restriction_enzymes/statistics.rb +65 -0
- data/lib/bioroebe/fasta_and_fastq/autocorrect_the_name_of_this_fasta_file.rb +1 -9
- data/lib/bioroebe/fasta_and_fastq/compact_fasta_file/compact_fasta_file.rb +7 -9
- data/lib/bioroebe/fasta_and_fastq/fasta_defline/fasta_defline.rb +1 -5
- data/lib/bioroebe/fasta_and_fastq/fasta_to_yaml/fasta_to_yaml.rb +81 -0
- data/lib/bioroebe/fasta_and_fastq/parse_fasta/parse_fasta.rb +1518 -7
- data/lib/bioroebe/fasta_and_fastq/return_fasta_subsection_of_this_file.rb +11 -2
- data/lib/bioroebe/fasta_and_fastq/show_fasta_headers.rb +27 -12
- data/lib/bioroebe/fasta_and_fastq/simplify_fasta_header/simplify_fasta_header.rb +1 -5
- data/lib/bioroebe/fasta_and_fastq/split_this_fasta_file_into_chromosomes/constants.rb +0 -5
- data/lib/bioroebe/genome/README.md +4 -0
- data/lib/bioroebe/genome/genome.rb +130 -0
- data/lib/bioroebe/genomes/genome_pattern.rb +3 -9
- data/lib/bioroebe/gui/gtk +1 -0
- data/lib/bioroebe/gui/gtk3/alignment/alignment.rb +106 -137
- data/lib/bioroebe/gui/gtk3/aminoacid_composition/aminoacid_composition.rb +27 -61
- data/lib/bioroebe/gui/gtk3/aminoacid_composition/customized_dialog.rb +1 -1
- data/lib/bioroebe/gui/gtk3/blosum_matrix_viewer/blosum_matrix_viewer.rb +1 -2
- data/lib/bioroebe/gui/gtk3/calculate_cell_numbers_of_bacteria/calculate_cell_numbers_of_bacteria.rb +1 -2
- data/lib/bioroebe/gui/gtk3/controller/controller.rb +46 -29
- data/lib/bioroebe/gui/gtk3/dna_to_aminoacid_widget/dna_to_aminoacid_widget.rb +77 -52
- data/lib/bioroebe/gui/gtk3/dna_to_reverse_complement_widget/dna_to_reverse_complement_widget.rb +1 -2
- data/lib/bioroebe/gui/gtk3/fasta_table_widget/fasta_table_widget.rb +100 -23
- data/lib/bioroebe/gui/gtk3/format_converter/format_converter.rb +1 -2
- data/lib/bioroebe/gui/gtk3/gene/gene.rb +1 -2
- data/lib/bioroebe/gui/gtk3/hamming_distance/hamming_distance.rb +43 -30
- data/lib/bioroebe/gui/gtk3/levensthein_distance/levensthein_distance.rb +1 -2
- data/lib/bioroebe/gui/gtk3/nucleotide_analyser/nucleotide_analyser.rb +120 -73
- data/lib/bioroebe/gui/gtk3/primer_design_widget/primer_design_widget.rb +1 -2
- data/lib/bioroebe/gui/gtk3/protein_to_DNA/protein_to_DNA.rb +19 -20
- data/lib/bioroebe/gui/gtk3/random_sequence/random_sequence.rb +20 -13
- data/lib/bioroebe/gui/gtk3/restriction_enzymes/restriction_enzymes.rb +1 -2
- data/lib/bioroebe/gui/gtk3/show_codon_table/misc.rb +97 -22
- data/lib/bioroebe/gui/gtk3/show_codon_table/show_codon_table.rb +3 -73
- data/lib/bioroebe/gui/gtk3/show_codon_usage/show_codon_usage.rb +1 -2
- data/lib/bioroebe/gui/gtk3/sizeseq/sizeseq.rb +1 -2
- data/lib/bioroebe/gui/gtk3/three_to_one/three_to_one.rb +1 -2
- data/lib/bioroebe/gui/gtk3/www_finder/www_finder.rb +1 -2
- data/lib/bioroebe/gui/javafx/bioroebe/Bioroebe.class +0 -0
- data/lib/bioroebe/gui/javafx/bioroebe/Bioroebe.java +104 -0
- data/lib/bioroebe/gui/javafx/bioroebe.jar +0 -0
- data/lib/bioroebe/gui/javafx/bioroebe.mf +1 -0
- data/lib/bioroebe/gui/javafx/module-info.class +0 -0
- data/lib/bioroebe/gui/javafx/module-info.java +5 -0
- data/lib/bioroebe/gui/jruby/alignment/alignment.rb +165 -0
- data/lib/bioroebe/gui/jruby/aminoacid_composition/aminoacid_composition.rb +166 -0
- data/lib/bioroebe/gui/libui/alignment/alignment.rb +3 -1
- data/lib/bioroebe/gui/libui/controller/controller.rb +116 -0
- data/lib/bioroebe/gui/libui/random_sequence/random_sequence.rb +18 -2
- data/lib/bioroebe/gui/libui/show_codon_table/show_codon_table.rb +2 -0
- data/lib/bioroebe/gui/libui/three_to_one/three_to_one.rb +8 -6
- data/lib/bioroebe/gui/shared_code/alignment/alignment_module.rb +102 -0
- data/lib/bioroebe/gui/shared_code/aminoacid_composition/aminoacid_composition_module.rb +94 -0
- data/lib/bioroebe/gui/shared_code/levensthein_distance/levensthein_distance_module.rb +18 -16
- data/lib/bioroebe/gui/shared_code/protein_to_DNA/protein_to_DNA_module.rb +14 -14
- data/lib/bioroebe/gui/swing/three_to_one/ThreeToOne$1.class +0 -0
- data/lib/bioroebe/gui/swing/three_to_one/ThreeToOne$CloseListener.class +0 -0
- data/lib/bioroebe/gui/swing/three_to_one/ThreeToOne.class +0 -0
- data/lib/bioroebe/gui/swing/three_to_one/ThreeToOne.java +141 -0
- data/lib/bioroebe/images/FORWARD_PRIMER.png +0 -0
- data/lib/bioroebe/images/REVERSE_PRIMER.png +0 -0
- data/lib/bioroebe/images/images.html +29845 -0
- data/lib/bioroebe/java/README.md +5 -0
- data/lib/bioroebe/java/bioroebe/AllInOne.java +1 -0
- data/lib/bioroebe/java/bioroebe/Base.class +0 -0
- data/lib/bioroebe/java/bioroebe/Base.java +39 -5
- data/lib/bioroebe/java/bioroebe/IsPalindrome.java +23 -5
- data/lib/bioroebe/java/bioroebe/SanitizeNucleotideSequence.java +0 -0
- data/lib/bioroebe/java/bioroebe/Sequence.java +28 -3
- data/lib/bioroebe/java/bioroebe/ToCamelcase.class +0 -0
- data/lib/bioroebe/java/bioroebe/ToCamelcase.java +16 -4
- data/lib/bioroebe/java/bioroebe/ToRNA.java +43 -0
- data/lib/bioroebe/java/bioroebe/ToplevelMethods.java +6 -0
- data/lib/bioroebe/java/bioroebe/{BisulfiteTreatment.class → src/BisulfiteTreatment.class} +0 -0
- data/lib/bioroebe/java/bioroebe/{Codons.class → src/Codons.class} +0 -0
- data/lib/bioroebe/java/bioroebe/src/Codons.java +35 -0
- data/lib/bioroebe/java/bioroebe/src/Commandline.class +0 -0
- data/lib/bioroebe/java/bioroebe/src/Commandline.java +101 -0
- data/lib/bioroebe/java/bioroebe/{Esystem.class → src/Esystem.class} +0 -0
- data/lib/bioroebe/java/bioroebe/{Esystem.java → src/Esystem.java} +6 -1
- data/lib/bioroebe/java/bioroebe/{GenerateRandomDnaSequence.class → src/GenerateRandomDnaSequence.class} +0 -0
- data/lib/bioroebe/java/bioroebe/{GenerateRandomDnaSequence.java → src/GenerateRandomDnaSequence.java} +8 -2
- data/lib/bioroebe/java/bioroebe/src/PartnerNucleotide.class +0 -0
- data/lib/bioroebe/java/bioroebe/src/PartnerNucleotide.java +56 -0
- data/lib/bioroebe/java/bioroebe/{RemoveFile.java → src/RemoveFile.java} +10 -4
- data/lib/bioroebe/java/bioroebe/{RemoveNumbers.class → src/RemoveNumbers.class} +0 -0
- data/lib/bioroebe/java/bioroebe/{RemoveNumbers.java → src/RemoveNumbers.java} +1 -0
- data/lib/bioroebe/java/bioroebe/src/toplevel_methods/BaseComposition.class +0 -0
- data/lib/bioroebe/java/bioroebe/src/toplevel_methods/BaseComposition.java +75 -0
- data/lib/bioroebe/misc/ruler.rb +11 -2
- data/lib/bioroebe/nucleotides/most_likely_nucleotide_sequence_for_this_aminoacid_sequence.rb +1 -9
- data/lib/bioroebe/nucleotides/sanitize_nucleotide_sequence.rb +59 -18
- data/lib/bioroebe/nucleotides/show_nucleotide_sequence.rb +7 -7
- data/lib/bioroebe/parsers/genbank_parser.rb +347 -26
- data/lib/bioroebe/parsers/gff.rb +1 -9
- data/lib/bioroebe/patterns/scan_for_repeat.rb +1 -5
- data/lib/bioroebe/pdb/fetch_fasta_sequence_from_pdb.rb +1 -9
- data/lib/bioroebe/pdb/parse_mmCIF_file.rb +1 -9
- data/lib/bioroebe/pdb/parse_pdb_file.rb +4 -10
- 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/convert_dna_to_aminoacid_sequence.py +137 -0
- data/lib/bioroebe/python/toplevel_methods/esystem.py +12 -0
- data/lib/bioroebe/python/toplevel_methods/open_in_browser.py +20 -0
- data/lib/bioroebe/python/toplevel_methods/palindromes.py +52 -0
- data/lib/bioroebe/python/toplevel_methods/rds.py +13 -0
- data/lib/bioroebe/python/toplevel_methods/shuffleseq.py +23 -0
- data/lib/bioroebe/python/toplevel_methods/three_delimiter.py +37 -0
- data/lib/bioroebe/python/toplevel_methods/time_and_date.py +43 -0
- data/lib/bioroebe/python/toplevel_methods/to_camelcase.py +21 -0
- data/lib/bioroebe/requires/require_cleave_and_digest.rb +3 -1
- data/lib/bioroebe/requires/require_the_bioroebe_project.rb +3 -1
- data/lib/bioroebe/sequence/alignment.rb +14 -4
- data/lib/bioroebe/sequence/dna.rb +1 -0
- data/lib/bioroebe/sequence/nucleotide_module/nucleotide_module.rb +28 -25
- data/lib/bioroebe/sequence/protein.rb +105 -3
- data/lib/bioroebe/sequence/rna.rb +220 -0
- data/lib/bioroebe/sequence/sequence.rb +128 -40
- data/lib/bioroebe/shell/menu.rb +3815 -3696
- data/lib/bioroebe/shell/misc.rb +9019 -3133
- data/lib/bioroebe/shell/readline/readline.rb +1 -1
- data/lib/bioroebe/shell/shell.rb +1137 -28
- data/lib/bioroebe/siRNA/siRNA.rb +81 -1
- data/lib/bioroebe/string_matching/find_longest_substring.rb +3 -2
- data/lib/bioroebe/string_matching/hamming_distance.rb +1 -9
- 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/help/helpline.rb +2 -2
- data/lib/bioroebe/taxonomy/info/check_available.rb +15 -9
- data/lib/bioroebe/taxonomy/info/info.rb +18 -11
- data/lib/bioroebe/taxonomy/info/is_dna.rb +46 -36
- data/lib/bioroebe/taxonomy/interactive.rb +140 -104
- 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/colourize_related_methods.rb +164 -0
- data/lib/bioroebe/toplevel_methods/databases.rb +1 -1
- data/lib/bioroebe/toplevel_methods/digest.rb +18 -8
- data/lib/bioroebe/toplevel_methods/fasta_and_fastq.rb +107 -63
- data/lib/bioroebe/toplevel_methods/file_and_directory_related_actions.rb +14 -2
- data/lib/bioroebe/toplevel_methods/frequencies.rb +8 -1
- data/lib/bioroebe/toplevel_methods/misc.rb +175 -11
- data/lib/bioroebe/toplevel_methods/nucleotides.rb +118 -46
- data/lib/bioroebe/toplevel_methods/open_in_browser.rb +2 -0
- data/lib/bioroebe/toplevel_methods/palindromes.rb +75 -47
- data/lib/bioroebe/toplevel_methods/taxonomy.rb +3 -3
- 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/compacter.rb +251 -0
- data/lib/bioroebe/utility_scripts/compseq/compseq.rb +1 -9
- data/lib/bioroebe/utility_scripts/consensus_sequence.rb +6 -6
- 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/parse_taxonomy.rb +2 -2
- data/lib/bioroebe/utility_scripts/permutations.rb +36 -9
- 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 +121 -58
- data/lib/bioroebe/www/sinatra/sinatra.rb +186 -71
- data/lib/bioroebe/yaml/aminoacids/amino_acids_long_name_to_one_letter.yml +2 -2
- data/lib/bioroebe/yaml/aminoacids/weight_of_common_proteins.yml +17 -17
- data/lib/bioroebe/yaml/configuration/browser.yml +1 -1
- data/lib/bioroebe/yaml/configuration/temp_dir.yml +1 -1
- data/lib/bioroebe/yaml/consensus_sequences/consensus_sequences.yml +1 -0
- data/lib/bioroebe/yaml/genomes/README.md +3 -4
- data/lib/bioroebe/yaml/nucleotides/nucleotides.yml +5 -0
- data/lib/bioroebe/yaml/restriction_enzymes/restriction_enzymes.yml +57 -57
- data/spec/README.md +6 -0
- data/spec/project_wide_specification/classes.md +5 -0
- metadata +107 -70
- data/doc/setup.rb +0 -1655
- data/lib/bioroebe/fasta_and_fastq/parse_fasta/constants.rb +0 -50
- data/lib/bioroebe/fasta_and_fastq/parse_fasta/initialize.rb +0 -86
- data/lib/bioroebe/fasta_and_fastq/parse_fasta/menu.rb +0 -117
- data/lib/bioroebe/fasta_and_fastq/parse_fasta/misc.rb +0 -981
- data/lib/bioroebe/fasta_and_fastq/parse_fasta/report.rb +0 -156
- data/lib/bioroebe/fasta_and_fastq/parse_fasta/reset.rb +0 -128
- data/lib/bioroebe/genbank/genbank_parser.rb +0 -291
- data/lib/bioroebe/java/bioroebe/AllInOne.class +0 -0
- data/lib/bioroebe/java/bioroebe/Cat.class +0 -0
- data/lib/bioroebe/java/bioroebe/Codons.java +0 -22
- data/lib/bioroebe/java/bioroebe/IsPalindrome.class +0 -0
- data/lib/bioroebe/java/bioroebe/PartnerNucleotide.class +0 -0
- data/lib/bioroebe/java/bioroebe/PartnerNucleotide.java +0 -19
- data/lib/bioroebe/java/bioroebe/SanitizeNucleotideSequence.class +0 -0
- data/lib/bioroebe/java/bioroebe/ToplevelMethods.class +0 -0
- data/lib/bioroebe/java/bioroebe.jar +0 -0
- 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/tk.rb +0 -23
- data/lib/bioroebe/shell/user_input.rb +0 -88
- data/lib/bioroebe/shell/xorg.rb +0 -45
- data/lib/bioroebe/utility_scripts/compacter.rb +0 -131
- /data/lib/bioroebe/java/bioroebe/{BisulfiteTreatment.java → src/BisulfiteTreatment.java} +0 -0
- /data/lib/bioroebe/java/bioroebe/{RemoveFile.class → src/RemoveFile.class} +0 -0
@@ -16,19 +16,90 @@ module Bioroebe
|
|
16
16
|
require 'bioroebe/toplevel_methods/extract.rb'
|
17
17
|
|
18
18
|
# ========================================================================= #
|
19
|
-
# === Bioroebe.
|
19
|
+
# === Bioroebe.percentage_count_non_DNA_bases_in_this_sequence
|
20
|
+
#
|
21
|
+
# Usage examples:
|
22
|
+
#
|
23
|
+
# Bioroebe.percentage_count_non_DNA_bases_in_this_sequence('ATCGF')
|
24
|
+
# Bioroebe.percentage_count_non_DNA_bases_in_this_sequence('ACTNGTGCTYGATRGTAGC', %w( A T G C Y R ))
|
20
25
|
#
|
21
|
-
# This method is solely a helper-method for Bioroebe.frequency_per_thousand().
|
22
26
|
# ========================================================================= #
|
23
|
-
def self.
|
24
|
-
|
25
|
-
total_n_elements = 1000
|
27
|
+
def self.percentage_count_non_DNA_bases_in_this_sequence(
|
28
|
+
i, array = Bioroebe.return_DNA_nucleotides
|
26
29
|
)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
30
|
+
n = count_non_DNA_bases_in_this_sequence(i, array)
|
31
|
+
percentage = (n * 100.0 / i.size.to_f)
|
32
|
+
return percentage
|
33
|
+
end
|
34
|
+
|
35
|
+
# ========================================================================= #
|
36
|
+
# === Bioroebe.count_non_DNA_bases_in_this_sequence
|
37
|
+
#
|
38
|
+
# Usage example:
|
39
|
+
#
|
40
|
+
# Bioroebe.count_non_DNA_bases_in_this_sequence('ATCGF')
|
41
|
+
#
|
42
|
+
# ========================================================================= #
|
43
|
+
def self.count_non_DNA_bases_in_this_sequence(
|
44
|
+
i, array = Bioroebe.return_DNA_nucleotides
|
45
|
+
)
|
46
|
+
i = i.dup
|
47
|
+
array.each {|this_nucleotide|
|
48
|
+
i.delete!(this_nucleotide)
|
49
|
+
}
|
50
|
+
return i.size
|
51
|
+
end
|
52
|
+
|
53
|
+
# ========================================================================= #
|
54
|
+
# === Bioroebe.sequence_based_on_these_restriction_enzymes
|
55
|
+
#
|
56
|
+
# Usage example:
|
57
|
+
#
|
58
|
+
# x = Bioroebe.sequence_based_on_these_restriction_enzymes(%w( EcoRI SacI KpnI XmaI BamHI XbaI SalI )); 'GAATTCGAGCTCGGTACCCCCGGGGGATCCTCTAGAGTCGAC'
|
59
|
+
#
|
60
|
+
# ========================================================================= #
|
61
|
+
def self.sequence_based_on_these_restriction_enzymes(*i)
|
62
|
+
require 'bioroebe/enzymes/restriction_enzyme.rb'
|
63
|
+
_ = ''.dup
|
64
|
+
i.flatten.each {|this_restriction_enzyme|
|
65
|
+
_ << ::Bioroebe.restriction_sites?(this_restriction_enzyme)
|
66
|
+
}
|
67
|
+
return _
|
68
|
+
end
|
69
|
+
|
70
|
+
# ========================================================================= #
|
71
|
+
# === Bioroebe.create_jar_archive
|
72
|
+
#
|
73
|
+
# This method will create a .jar file.
|
74
|
+
#
|
75
|
+
# To invoke it from the commandline do:
|
76
|
+
#
|
77
|
+
# bioroebe --jar
|
78
|
+
#
|
79
|
+
# To execute a .jar file do:
|
80
|
+
#
|
81
|
+
# java -jar foobar.jar
|
82
|
+
#
|
83
|
+
# ========================================================================= #
|
84
|
+
def self.create_jar_archive
|
85
|
+
e 'Creating a .jar archive next:'
|
86
|
+
e
|
87
|
+
original_dir = return_pwd
|
88
|
+
cd '/home/x/programming/ruby/src/bioroebe/lib/bioroebe/java/bioroebe/src/main/java/'
|
89
|
+
esystem 'jar cf bioroebe.jar bioroebe/'
|
90
|
+
target_file = File.absolute_path('bioroebe.jar')
|
91
|
+
cd original_dir
|
92
|
+
if File.exist? target_file
|
93
|
+
e 'Moving the created .jar file into the current working '\
|
94
|
+
'directory next.'
|
95
|
+
move_file(target_file, original_dir)
|
96
|
+
e 'It should now be at:'
|
97
|
+
e
|
98
|
+
e sfile(" #{original_dir}#{File.basename(target_file)}")
|
99
|
+
e
|
100
|
+
end
|
101
|
+
# esystem 'jar cfe bioroebe.jar myClass myClass.class'
|
102
|
+
e
|
32
103
|
end
|
33
104
|
|
34
105
|
# ========================================================================= #
|
@@ -86,6 +157,7 @@ EOF
|
|
86
157
|
# Usage example:
|
87
158
|
#
|
88
159
|
# Bioroebe.codon_frequency_of_this_string
|
160
|
+
# Bioroebe.codon_frequency_of_this_string 'ATTCGTACGATCGACTACTACT' # => {"UAC"=>2, "GAC"=>1, "AUC"=>1, "ACG"=>1, "CGU"=>1, "AUU"=>1}
|
89
161
|
#
|
90
162
|
# ========================================================================= #
|
91
163
|
def self.codon_frequency_of_this_string(
|
@@ -107,6 +179,22 @@ EOF
|
|
107
179
|
return sorted_hash
|
108
180
|
end
|
109
181
|
|
182
|
+
# ========================================================================= #
|
183
|
+
# === Bioroebe.thousand_percentage
|
184
|
+
#
|
185
|
+
# This method is solely a helper-method for Bioroebe.frequency_per_thousand().
|
186
|
+
# ========================================================================= #
|
187
|
+
def self.thousand_percentage(
|
188
|
+
this_codon_n_times = 1,
|
189
|
+
total_n_elements = 1000
|
190
|
+
)
|
191
|
+
result = (
|
192
|
+
(this_codon_n_times * 1000.0) / total_n_elements.to_f
|
193
|
+
).round(1)
|
194
|
+
padded_result = result.to_s.rjust(5, ' ')
|
195
|
+
return padded_result
|
196
|
+
end
|
197
|
+
|
110
198
|
# ========================================================================= #
|
111
199
|
# === Bioroebe.align_this_string_via_multiple_sequence_alignment
|
112
200
|
#
|
@@ -314,7 +402,13 @@ EOF
|
|
314
402
|
# ========================================================================= #
|
315
403
|
# === Bioroebe.bisulfite_treatment
|
316
404
|
#
|
317
|
-
# Simply convert all C into U.
|
405
|
+
# Simply convert all C into U. The underlying idea here is that
|
406
|
+
# bilsufite will convert unmethylated Cytosines into Uracil.
|
407
|
+
#
|
408
|
+
# Usage example:
|
409
|
+
#
|
410
|
+
# Bioroebe.bisulfite_treatment('CCCGCAATGCATACCTCGCCG') # => "UUUGUAATGUATAUUTUGUUG"
|
411
|
+
#
|
318
412
|
# ========================================================================= #
|
319
413
|
def self.bisulfite_treatment(i)
|
320
414
|
if i.is_a? Array
|
@@ -420,6 +514,76 @@ EOF
|
|
420
514
|
end; self.instance_eval { alias on_windows? windows_platform? } # === Bioroebe.on_windows?
|
421
515
|
self.instance_eval { alias is_on_windows? windows_platform? } # === Bioroebe.is_on_windows?
|
422
516
|
|
517
|
+
# ========================================================================= #
|
518
|
+
# === Bioroebe.two_dimensional_plot
|
519
|
+
#
|
520
|
+
# This method makes use of gnuplot to draw a 2D plot.
|
521
|
+
#
|
522
|
+
# The first argument should contain your dataset, as a String.
|
523
|
+
# ========================================================================= #
|
524
|
+
def self.two_dimensional_plot(
|
525
|
+
dataset = '6 12
|
526
|
+
8 14
|
527
|
+
10 18
|
528
|
+
12 23
|
529
|
+
14 28
|
530
|
+
16 29
|
531
|
+
18 26
|
532
|
+
20 23
|
533
|
+
22 20',
|
534
|
+
optional_hash = {
|
535
|
+
width: 800,
|
536
|
+
height: 640
|
537
|
+
}
|
538
|
+
)
|
539
|
+
# ======================================================================= #
|
540
|
+
# Provide some generic fall-back values for width and height next:
|
541
|
+
# ======================================================================= #
|
542
|
+
width = 1000
|
543
|
+
height = 800
|
544
|
+
_ = optional_hash
|
545
|
+
if _.is_a? Hash
|
546
|
+
# ===================================================================== #
|
547
|
+
# === :width
|
548
|
+
# ===================================================================== #
|
549
|
+
if _.has_key? :width
|
550
|
+
width = _.delete(:width)
|
551
|
+
end
|
552
|
+
# ===================================================================== #
|
553
|
+
# === :height
|
554
|
+
# ===================================================================== #
|
555
|
+
if _.has_key? :height
|
556
|
+
height = _.delete(:height)
|
557
|
+
end
|
558
|
+
end
|
559
|
+
# ======================================================================= #
|
560
|
+
# Go to a safe base directory.
|
561
|
+
# ======================================================================= #
|
562
|
+
cd :bioroebe_log_directory
|
563
|
+
mkdir 'gnuplot' unless File.directory?('gnuplot')
|
564
|
+
cd 'gnuplot'
|
565
|
+
# ======================================================================= #
|
566
|
+
# First save the dataset into dataset.md:
|
567
|
+
# ======================================================================= #
|
568
|
+
into = File.absolute_path('dataset.md')
|
569
|
+
e 'Storing the dataset into '+sfile(into)+' next.'
|
570
|
+
write_what_into(dataset, into)
|
571
|
+
what = <<-EOF
|
572
|
+
|
573
|
+
set terminal png size #{width},#{height} enhanced font "Helvetica, 18"
|
574
|
+
set output 'fancy_graph.png'
|
575
|
+
plot '#{into}' with linespoints ls 1 notitle
|
576
|
+
|
577
|
+
EOF
|
578
|
+
into = File.absolute_path('gnuplot.file')
|
579
|
+
e 'Storing into '+into+'.'
|
580
|
+
write_what_into(what, into)
|
581
|
+
esystem 'gnuplot '+into
|
582
|
+
if File.exist? 'fancy_graph.png' and is_on_roebe?
|
583
|
+
Open.in_browser('fancy_graph.png')
|
584
|
+
end
|
585
|
+
end
|
586
|
+
|
423
587
|
end
|
424
588
|
|
425
589
|
if __FILE__ == $PROGRAM_NAME
|
@@ -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
|
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
|
-
|
289
|
-
|
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']
|
@@ -3,12 +3,86 @@
|
|
3
3
|
# frozen_string_literal: true
|
4
4
|
# =========================================================================== #
|
5
5
|
# require 'bioroebe/toplevel_methods/palindromes.rb'
|
6
|
+
# Bioroebe.plain_palindrome(ARGV)
|
6
7
|
# puts Bioroebe.is_palindrome? ARGV
|
7
8
|
# =========================================================================== #
|
8
9
|
module Bioroebe
|
9
10
|
|
10
11
|
require 'bioroebe/toplevel_methods/e.rb'
|
11
12
|
|
13
|
+
# ========================================================================= #
|
14
|
+
# === Bioroebe.plain_palindrome
|
15
|
+
#
|
16
|
+
# This method is simply than Bioroebe.is_palindrome?. It will simply
|
17
|
+
# check for the current sequence.
|
18
|
+
#
|
19
|
+
# Usage example:
|
20
|
+
#
|
21
|
+
# Bioroebe.plain_palindrome('OTTO') # => true
|
22
|
+
# Bioroebe.plain_palindrome('Saippuakivikauppias') # => true
|
23
|
+
#
|
24
|
+
# ========================================================================= #
|
25
|
+
def self.plain_palindrome(i)
|
26
|
+
if i.is_a? Array
|
27
|
+
i = i.join(' ').strip
|
28
|
+
end
|
29
|
+
i = i.dup.downcase
|
30
|
+
if i.size.even?
|
31
|
+
first_half = i[0 .. (i.size / 2 - 1)]
|
32
|
+
second_half = i[(i.size / 2) .. -1]
|
33
|
+
return (first_half == second_half.reverse)
|
34
|
+
else # This is for odd numbers.
|
35
|
+
first_half = i[0 .. (i.size / 2 - 1)]
|
36
|
+
second_half = i[(i.size / 2 + 1) .. -1]
|
37
|
+
return (first_half == second_half.reverse)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# ========================================================================= #
|
42
|
+
# === Bioroebe.is_palindrome?
|
43
|
+
#
|
44
|
+
# This method will return true if the target sequence is a palindrome,
|
45
|
+
# and false otherwise.
|
46
|
+
#
|
47
|
+
# When will a sequence be considered to be a "palindrome"?
|
48
|
+
#
|
49
|
+
# Firstly, it must have an even number of components. If it has an odd
|
50
|
+
# number then it can never be a Palindrome, by definition alone.
|
51
|
+
#
|
52
|
+
# So, "GATC" is a palindrome, but "GATCC" can never be. (GATC is a
|
53
|
+
# palindrome because the reverse of GATC will bind to itself again.)
|
54
|
+
#
|
55
|
+
# Usage examples:
|
56
|
+
#
|
57
|
+
# Bioroebe.is_palindrome? 'GAATTC' # => true
|
58
|
+
# Bioroebe.is_palindrome? 'GAATTCCC' # => false
|
59
|
+
#
|
60
|
+
# ========================================================================= #
|
61
|
+
def self.is_palindrome?(i)
|
62
|
+
require 'bioroebe/toplevel_methods/nucleotides.rb'
|
63
|
+
if i.is_a? Array
|
64
|
+
i = i.first
|
65
|
+
end
|
66
|
+
hash = ::Bioroebe.partner_nucleotide_hash
|
67
|
+
return_value = false
|
68
|
+
if i
|
69
|
+
if i.to_s.size.odd? # Then it can never be a Palindrome.
|
70
|
+
else # Ok, it may be a palindrome here.
|
71
|
+
first_half = i[0 .. (i.size / 2)-1]
|
72
|
+
_ = ''.dup
|
73
|
+
first_half.chars.reverse.each {|char|
|
74
|
+
_ << hash[char] if hash.has_key? char
|
75
|
+
}
|
76
|
+
if (first_half + _) == i # Compare it to the original input.
|
77
|
+
return_value = true
|
78
|
+
end
|
79
|
+
end
|
80
|
+
return return_value
|
81
|
+
else
|
82
|
+
:invalid_input
|
83
|
+
end
|
84
|
+
end; self.instance_eval { alias is_this_sequence_a_palindrome? is_palindrome? } # === Bioroebe.is_this_sequence_a_palindrome?
|
85
|
+
|
12
86
|
# ========================================================================= #
|
13
87
|
# === Bioroebe.return_every_substring_from_this_sequence
|
14
88
|
# ========================================================================= #
|
@@ -67,56 +141,10 @@ module Bioroebe
|
|
67
141
|
return array_containing_starting_index_and_length_of_reverse_palindromes
|
68
142
|
end
|
69
143
|
|
70
|
-
# ========================================================================= #
|
71
|
-
# === Bioroebe.is_palindrome?
|
72
|
-
#
|
73
|
-
# This method will return true if the target sequence is a palindrome,
|
74
|
-
# and false otherwise.
|
75
|
-
#
|
76
|
-
# When will a sequence be considered to be a "palindrome"?
|
77
|
-
#
|
78
|
-
# Firstly, it must have an even number of components. If it has an odd
|
79
|
-
# number then it can never be a Palindrome, by definition alone.
|
80
|
-
#
|
81
|
-
# So, "GATC" is a palindrome, but "GATCC" can never be. (GATC is a
|
82
|
-
# palindrome because the reverse of GATC will bind to itself again.)
|
83
|
-
#
|
84
|
-
# Usage examples:
|
85
|
-
#
|
86
|
-
# Bioroebe.is_palindrome? 'GAATTC' # => true
|
87
|
-
# Bioroebe.is_palindrome? 'GAATTCCC' # => false
|
88
|
-
#
|
89
|
-
# ========================================================================= #
|
90
|
-
def self.is_palindrome?(i)
|
91
|
-
require 'bioroebe/toplevel_methods/nucleotides.rb'
|
92
|
-
if i.is_a? Array
|
93
|
-
i = i.first
|
94
|
-
end
|
95
|
-
hash = ::Bioroebe.partner_nucleotide_hash
|
96
|
-
return_value = false
|
97
|
-
if i
|
98
|
-
if i.to_s.size.odd? # Then it can never be a Palindrome.
|
99
|
-
else # Ok, it may be a palindrome here.
|
100
|
-
first_half = i[0 .. (i.size / 2)-1]
|
101
|
-
_ = ''.dup
|
102
|
-
first_half.chars.reverse.each {|char|
|
103
|
-
_ << hash[char] if hash.has_key? char
|
104
|
-
}
|
105
|
-
if (first_half + _) == i # Compare it to the original input.
|
106
|
-
return_value = true
|
107
|
-
end
|
108
|
-
end
|
109
|
-
return return_value
|
110
|
-
else
|
111
|
-
:invalid_input
|
112
|
-
end
|
113
|
-
end; self.instance_eval { alias is_this_sequence_a_palindrome? is_palindrome? } # === Bioroebe.is_this_sequence_a_palindrome?
|
114
|
-
|
115
144
|
end
|
116
145
|
|
117
146
|
if __FILE__ == $PROGRAM_NAME
|
118
|
-
pp Bioroebe.every_reverse_palindrome_in_this_string(ARGV)
|
119
|
-
exit
|
147
|
+
pp Bioroebe.every_reverse_palindrome_in_this_string(ARGV)
|
120
148
|
if ARGV.empty?
|
121
149
|
p 'GAATTC: '+Bioroebe.is_palindrome?('GAATTC').to_s # => true
|
122
150
|
p 'GAATTCCC: '+Bioroebe.is_palindrome?('GAATTCCC').to_s # => false
|
@@ -131,7 +131,7 @@ module Taxonomy # === Bioroebe::Taxonomy
|
|
131
131
|
else # Safeguard here.
|
132
132
|
if at_home?
|
133
133
|
if be_verbose
|
134
|
-
this_dir =
|
134
|
+
this_dir = temp_dir?
|
135
135
|
e "The directory at #{sdir(this_dir)} does not "\
|
136
136
|
"exist, thus trying to"
|
137
137
|
e 'use '+sdir(this_dir)+' instead.'
|
@@ -141,8 +141,8 @@ module Taxonomy # === Bioroebe::Taxonomy
|
|
141
141
|
end
|
142
142
|
end
|
143
143
|
if be_verbose
|
144
|
-
e
|
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
|
# ======================================================================= #
|