bioroebe 0.10.80 → 0.12.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
# ======================================================================= #
|