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
@@ -0,0 +1,251 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
# Encoding: UTF-8
|
3
|
+
# frozen_string_literal: true
|
4
|
+
# =========================================================================== #
|
5
|
+
# === Bioroebe::Compacter
|
6
|
+
#
|
7
|
+
# This class can be used to compact a file, in particular FASTA files.
|
8
|
+
#
|
9
|
+
# The first line will be removed if it starts with a ">" token.
|
10
|
+
#
|
11
|
+
# Usage example:
|
12
|
+
#
|
13
|
+
# Biroebe::Compacter.new(ARGV)
|
14
|
+
#
|
15
|
+
# =========================================================================== #
|
16
|
+
# require 'bioroebe/utility_scripts/compacter/compacter.rb'
|
17
|
+
# =========================================================================== #
|
18
|
+
require 'bioroebe/base/commandline_application/commandline_application.rb'
|
19
|
+
|
20
|
+
module Bioroebe
|
21
|
+
|
22
|
+
class Compacter < ::Bioroebe::CommandlineApplication # === Bioroebe::Compacter
|
23
|
+
|
24
|
+
require 'bioroebe/nucleotides/sanitize_nucleotide_sequence.rb'
|
25
|
+
|
26
|
+
# ========================================================================= #
|
27
|
+
# === initialize
|
28
|
+
# ========================================================================= #
|
29
|
+
def initialize(
|
30
|
+
commandline_arguments = nil,
|
31
|
+
run_already = true,
|
32
|
+
&block
|
33
|
+
)
|
34
|
+
register_sigint
|
35
|
+
reset
|
36
|
+
set_commandline_arguments(
|
37
|
+
commandline_arguments
|
38
|
+
)
|
39
|
+
# ======================================================================= #
|
40
|
+
# === Handle blocks given to this class next
|
41
|
+
# ======================================================================= #
|
42
|
+
if block_given?
|
43
|
+
yielded = yield
|
44
|
+
case yielded
|
45
|
+
# ===================================================================== #
|
46
|
+
# === :do_not_ask_for_user_input
|
47
|
+
# ===================================================================== #
|
48
|
+
when :do_not_ask_for_user_input
|
49
|
+
@internal_hash[:ask_for_user_input] = false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
run if run_already
|
53
|
+
end
|
54
|
+
|
55
|
+
# ========================================================================= #
|
56
|
+
# === reset (reset tag)
|
57
|
+
# ========================================================================= #
|
58
|
+
def reset
|
59
|
+
super()
|
60
|
+
infer_the_namespace
|
61
|
+
# ======================================================================= #
|
62
|
+
# === :work_on_these_files
|
63
|
+
# ======================================================================= #
|
64
|
+
@internal_hash[:work_on_these_files] = []
|
65
|
+
# ======================================================================= #
|
66
|
+
# === :ask_for_user_input
|
67
|
+
# ======================================================================= #
|
68
|
+
@internal_hash[:ask_for_user_input] = true
|
69
|
+
# ======================================================================= #
|
70
|
+
# === :perform_these_actions_on_each_file
|
71
|
+
#
|
72
|
+
# The following Array specifies which actions are to be performed onto
|
73
|
+
# the target file at hand. The user can modify this, to adjust the
|
74
|
+
# behaviour of this class.
|
75
|
+
# ======================================================================= #
|
76
|
+
@internal_hash[:perform_these_actions_on_each_file] = [
|
77
|
+
:strip_newlines,
|
78
|
+
:remove_numbers,
|
79
|
+
:upcase_the_sequence,
|
80
|
+
:eliminate_spaces
|
81
|
+
]
|
82
|
+
end
|
83
|
+
|
84
|
+
# ========================================================================= #
|
85
|
+
# === menu (menu tag)
|
86
|
+
# ========================================================================= #
|
87
|
+
def menu(
|
88
|
+
i = commandline_arguments?
|
89
|
+
)
|
90
|
+
if i.is_a? Array
|
91
|
+
i.each {|entry| menu(entry) }
|
92
|
+
else
|
93
|
+
case i # case tag
|
94
|
+
# ===================================================================== #
|
95
|
+
# === --retain-newlines
|
96
|
+
#
|
97
|
+
# Usage example:
|
98
|
+
#
|
99
|
+
# compacter SPRR4_protein.fasta --retain-newlines
|
100
|
+
#
|
101
|
+
# ===================================================================== #
|
102
|
+
when /-?-?retain(-|_)?newlines/
|
103
|
+
@internal_hash[:perform_these_actions_on_each_file].reject! {|entry|
|
104
|
+
entry == :strip_newlines
|
105
|
+
}
|
106
|
+
# ===================================================================== #
|
107
|
+
# === --help
|
108
|
+
# ===================================================================== #
|
109
|
+
when /help/
|
110
|
+
show_help
|
111
|
+
exit
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
# ========================================================================= #
|
117
|
+
# === show_help (help tag)
|
118
|
+
# ========================================================================= #
|
119
|
+
def show_help
|
120
|
+
opnn { :no_newline }
|
121
|
+
e
|
122
|
+
e ' --retain-newlines # retain newlines, aka do not dump into a single line'
|
123
|
+
e
|
124
|
+
end
|
125
|
+
|
126
|
+
# ========================================================================= #
|
127
|
+
# === determine_the_input_files
|
128
|
+
# ========================================================================= #
|
129
|
+
def determine_the_input_files
|
130
|
+
commandline_arguments?.each {|this_entry|
|
131
|
+
if File.file?(this_entry)
|
132
|
+
@internal_hash[:work_on_these_files] << this_entry
|
133
|
+
end
|
134
|
+
}
|
135
|
+
end
|
136
|
+
|
137
|
+
# ========================================================================= #
|
138
|
+
# === perform_these_actions_on_each_file?
|
139
|
+
# ========================================================================= #
|
140
|
+
def perform_these_actions_on_each_file?
|
141
|
+
@internal_hash[:perform_these_actions_on_each_file]
|
142
|
+
end
|
143
|
+
|
144
|
+
# ========================================================================= #
|
145
|
+
# === ask_for_user_input?
|
146
|
+
# ========================================================================= #
|
147
|
+
def ask_for_user_input?
|
148
|
+
@internal_hash[:ask_for_user_input]
|
149
|
+
end
|
150
|
+
|
151
|
+
# ========================================================================= #
|
152
|
+
# === consider_working_through_the_input_files
|
153
|
+
# ========================================================================= #
|
154
|
+
def consider_working_through_the_input_files
|
155
|
+
_ = @internal_hash[:work_on_these_files]
|
156
|
+
if _.empty?
|
157
|
+
opne 'Please provide at the least ony locally existing file as'
|
158
|
+
opne 'input to this class.'
|
159
|
+
else
|
160
|
+
perform_these_actions_on_each_file = perform_these_actions_on_each_file?
|
161
|
+
_.each {|this_file|
|
162
|
+
if File.exist? this_file
|
163
|
+
# ================================================================= #
|
164
|
+
# Tell the user which file we will compact next.
|
165
|
+
# ================================================================= #
|
166
|
+
opne "#{rev}Working to compact the following file next: "\
|
167
|
+
"`#{sfile(this_file)}#{rev}`." if be_verbose?
|
168
|
+
dataset = default_readlines(this_file)
|
169
|
+
# ================================================================= #
|
170
|
+
# First, check for ORIGIN; or a FASTA header that begins with '>'.
|
171
|
+
# ================================================================= #
|
172
|
+
if dataset.first
|
173
|
+
first = dataset.first
|
174
|
+
if first.start_with? 'ORIGIN'
|
175
|
+
dataset[0][0,'ORIGIN'.size] = ''
|
176
|
+
dataset[0].lstrip!
|
177
|
+
elsif first.start_with? '>'
|
178
|
+
# =============================================================== #
|
179
|
+
# In this case, chop off the first line completely.
|
180
|
+
# =============================================================== #
|
181
|
+
dataset[0][0, first.index("\n")] = ''
|
182
|
+
dataset[0].lstrip!
|
183
|
+
end
|
184
|
+
end
|
185
|
+
if perform_these_actions_on_each_file.include? :strip_newlines
|
186
|
+
dataset.map! {|entry| entry.strip }
|
187
|
+
end
|
188
|
+
if perform_these_actions_on_each_file.include? :remove_numbers
|
189
|
+
dataset.map! {|entry| entry.delete('[0-9]') }
|
190
|
+
end
|
191
|
+
if perform_these_actions_on_each_file.include? :upcase_the_sequence
|
192
|
+
dataset.map! {|entry| entry.upcase }
|
193
|
+
end
|
194
|
+
if perform_these_actions_on_each_file.include? :eliminate_spaces
|
195
|
+
dataset.map! {|entry| entry.delete(' ') }
|
196
|
+
end
|
197
|
+
# ================================================================= #
|
198
|
+
# Next we tap into class Bioroebe::SanitizeNucleotideSequence
|
199
|
+
# ================================================================= #
|
200
|
+
dataset = Bioroebe::SanitizeNucleotideSequence[dataset] { :do_not_remove_newlines }
|
201
|
+
if ask_for_user_input?
|
202
|
+
opne 'We will now store into the same file, but you must'
|
203
|
+
opne 'type "'+steelblue('y')+'" to confirm, else we cancel:'
|
204
|
+
user_input = $stdin.gets.chomp
|
205
|
+
else
|
206
|
+
user_input = 'yes'
|
207
|
+
end
|
208
|
+
if user_input.start_with? 'y'
|
209
|
+
opne "Now storing into the file `#{sfile(this_file)}`." if be_verbose?
|
210
|
+
write_what_into(dataset, this_file)
|
211
|
+
end
|
212
|
+
end # no else clause is possible here, due to a prior if-check.
|
213
|
+
}
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
# ========================================================================= #
|
218
|
+
# === run (run tag)
|
219
|
+
# ========================================================================= #
|
220
|
+
def run
|
221
|
+
menu
|
222
|
+
determine_the_input_files
|
223
|
+
consider_working_through_the_input_files
|
224
|
+
end
|
225
|
+
|
226
|
+
# ========================================================================= #
|
227
|
+
# === Bioroebe::Compacter[]
|
228
|
+
# ========================================================================= #
|
229
|
+
def self.[](i = ARGV)
|
230
|
+
new(i)
|
231
|
+
end
|
232
|
+
|
233
|
+
end
|
234
|
+
|
235
|
+
# =========================================================================== #
|
236
|
+
# === Bioroebe.compacter
|
237
|
+
#
|
238
|
+
# Note that this variant will NEVER ask for user-input of the
|
239
|
+
# Bioroebe::Compacter class.
|
240
|
+
# =========================================================================== #
|
241
|
+
def self.compacter(
|
242
|
+
i = ARGV
|
243
|
+
)
|
244
|
+
Bioroebe::Compacter.new(i) { :do_not_ask_for_user_input }
|
245
|
+
end
|
246
|
+
|
247
|
+
end
|
248
|
+
|
249
|
+
if __FILE__ == $PROGRAM_NAME
|
250
|
+
Bioroebe::Compacter.new(ARGV)
|
251
|
+
end # fastacompact
|
@@ -47,11 +47,6 @@ class Compseq < ::Bioroebe::CommandlineApplication # === Bioroebe::Compseq
|
|
47
47
|
# ========================================================================= #
|
48
48
|
COLOURIZE_CpG_ISLANDS = true
|
49
49
|
|
50
|
-
# ========================================================================= #
|
51
|
-
# === NAMESPACE
|
52
|
-
# ========================================================================= #
|
53
|
-
NAMESPACE = inspect
|
54
|
-
|
55
50
|
# ========================================================================= #
|
56
51
|
# === EXPECTED_FREQUENCY
|
57
52
|
# ========================================================================= #
|
@@ -108,10 +103,7 @@ class Compseq < ::Bioroebe::CommandlineApplication # === Bioroebe::Compseq
|
|
108
103
|
# ========================================================================= #
|
109
104
|
def reset
|
110
105
|
super()
|
111
|
-
|
112
|
-
# === @namespace
|
113
|
-
# ======================================================================= #
|
114
|
-
@namespace = NAMESPACE
|
106
|
+
infer_the_namespace
|
115
107
|
# ======================================================================= #
|
116
108
|
# === @identifier
|
117
109
|
# ======================================================================= #
|
@@ -35,7 +35,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
|
|
35
35
|
# ===================================================================== #
|
36
36
|
when :do_not_run_yet_and_be_quiet
|
37
37
|
run_already = false
|
38
|
-
|
38
|
+
set_be_quiet
|
39
39
|
@report_the_frequencies = false
|
40
40
|
# ===================================================================== #
|
41
41
|
# === :do_not_run_yet
|
@@ -46,7 +46,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
|
|
46
46
|
# === :be_quiet
|
47
47
|
# ===================================================================== #
|
48
48
|
when :be_quiet
|
49
|
-
|
49
|
+
set_be_quiet
|
50
50
|
@report_the_frequencies = false
|
51
51
|
end
|
52
52
|
end
|
@@ -66,7 +66,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
|
|
66
66
|
# ======================================================================= #
|
67
67
|
# === @be_verbose
|
68
68
|
# ======================================================================= #
|
69
|
-
|
69
|
+
set_be_verbose
|
70
70
|
# ======================================================================= #
|
71
71
|
# === @report_the_frequencies
|
72
72
|
# ======================================================================= #
|
@@ -195,7 +195,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
|
|
195
195
|
# === report_on_which_sequences_we_will_operate
|
196
196
|
# ========================================================================= #
|
197
197
|
def report_on_which_sequences_we_will_operate(
|
198
|
-
be_verbose =
|
198
|
+
be_verbose = be_verbose?
|
199
199
|
)
|
200
200
|
case be_verbose
|
201
201
|
when :be_verbose
|
@@ -217,7 +217,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
|
|
217
217
|
# === report_the_consensus_sequence
|
218
218
|
# ========================================================================= #
|
219
219
|
def report_the_consensus_sequence
|
220
|
-
if
|
220
|
+
if be_verbose?
|
221
221
|
the_consensus_sequence = consensus_sequence?
|
222
222
|
erev 'The consensus sequence is: '
|
223
223
|
e
|
@@ -238,7 +238,7 @@ class ConsensusSequence < ::Bioroebe::CommandlineApplication # === Bioroebe::Con
|
|
238
238
|
try_to_find_and_report_an_even_simpler_consensus_sequence(
|
239
239
|
the_consensus_sequence
|
240
240
|
)
|
241
|
-
if
|
241
|
+
if be_verbose?
|
242
242
|
erev 'Finally, we will display the above findings in a'
|
243
243
|
erev 'shorter variant:'
|
244
244
|
report_on_which_sequences_we_will_operate
|
@@ -44,11 +44,6 @@ https://www.ncbi.nlm.nih.gov/nuccore/NZ_CP007215.2
|
|
44
44
|
https://www.ncbi.nlm.nih.gov/nuccore/NC_003197.2
|
45
45
|
'
|
46
46
|
|
47
|
-
# ========================================================================= #
|
48
|
-
# === NAMESPACE
|
49
|
-
# ========================================================================= #
|
50
|
-
NAMESPACE = inspect
|
51
|
-
|
52
47
|
# ========================================================================= #
|
53
48
|
# === initialize
|
54
49
|
# ========================================================================= #
|
@@ -66,10 +61,7 @@ https://www.ncbi.nlm.nih.gov/nuccore/NC_003197.2
|
|
66
61
|
# ========================================================================= #
|
67
62
|
def reset
|
68
63
|
super()
|
69
|
-
|
70
|
-
# === @namespace
|
71
|
-
# ======================================================================= #
|
72
|
-
@namespace = NAMESPACE
|
64
|
+
infer_the_namespace
|
73
65
|
end
|
74
66
|
|
75
67
|
# ========================================================================= #
|
@@ -21,11 +21,6 @@ module Bioroebe
|
|
21
21
|
|
22
22
|
class DotAlignment < ::Bioroebe::CommandlineApplication # === Bioroebe::DotAlignment
|
23
23
|
|
24
|
-
# ========================================================================= #
|
25
|
-
# === NAMESPACE
|
26
|
-
# ========================================================================= #
|
27
|
-
NAMESPACE = inspect
|
28
|
-
|
29
24
|
# ========================================================================= #
|
30
25
|
# === initialize
|
31
26
|
# ========================================================================= #
|
@@ -43,10 +38,7 @@ class DotAlignment < ::Bioroebe::CommandlineApplication # === Bioroebe::DotAlign
|
|
43
38
|
# ========================================================================= #
|
44
39
|
def reset
|
45
40
|
super()
|
46
|
-
|
47
|
-
# === @namespace
|
48
|
-
# ======================================================================= #
|
49
|
-
@namespace = NAMESPACE
|
41
|
+
infer_the_namespace
|
50
42
|
# ======================================================================= #
|
51
43
|
# === @may_we_continue
|
52
44
|
# ======================================================================= #
|
@@ -42,10 +42,7 @@ class MoveFileToItsCorrectLocation < ::Bioroebe::CommandlineApplication
|
|
42
42
|
# ========================================================================= #
|
43
43
|
def reset
|
44
44
|
super()
|
45
|
-
|
46
|
-
# === @namespace
|
47
|
-
# ======================================================================= #
|
48
|
-
@namespace = NAMESPACE
|
45
|
+
infer_the_namespace
|
49
46
|
# ======================================================================= #
|
50
47
|
# === @try_to_relocate_the_file_to_an_appropriate_subdirectory
|
51
48
|
#
|
@@ -64,7 +64,7 @@ class ParseTaxonomy < ::Bioroebe::CommandlineApplication # === Bioroebe::ParseTa
|
|
64
64
|
# ======================================================================= #
|
65
65
|
# === @be_verbose
|
66
66
|
# ======================================================================= #
|
67
|
-
|
67
|
+
set_be_quiet
|
68
68
|
end
|
69
69
|
|
70
70
|
# ========================================================================= #
|
@@ -112,7 +112,7 @@ class ParseTaxonomy < ::Bioroebe::CommandlineApplication # === Bioroebe::ParseTa
|
|
112
112
|
# ========================================================================= #
|
113
113
|
def read_in_url(i = @url)
|
114
114
|
require 'open-uri'
|
115
|
-
e "Reading in from #{sfancy(i.to_s)} now." if
|
115
|
+
e "Reading in from #{sfancy(i.to_s)} now." if be_verbose?
|
116
116
|
@dataset = URI.open(i).read
|
117
117
|
end
|
118
118
|
|
@@ -4,9 +4,9 @@
|
|
4
4
|
# =========================================================================== #
|
5
5
|
# === Bioroebe::Permutations
|
6
6
|
#
|
7
|
-
# Pass a number into this class.
|
7
|
+
# Pass a number into this class. This number should be smaller than 8,
|
8
8
|
# so 1, 2, 3 etc... is all ok; 8 is beginning to become difficult, as it
|
9
|
-
# leads to more calculations and thus more time
|
9
|
+
# leads to more calculations and thus more time required to display the
|
10
10
|
# result - after all there are already 40321 lines generated when the
|
11
11
|
# number is 8, so the higher the input, the more lines generated.
|
12
12
|
#
|
@@ -81,6 +81,13 @@ class Permutations < ::Bioroebe::CommandlineApplication # === Bioroebe::Permutat
|
|
81
81
|
@result
|
82
82
|
end; alias result result? # === result
|
83
83
|
|
84
|
+
# ========================================================================= #
|
85
|
+
# === report
|
86
|
+
# ========================================================================= #
|
87
|
+
def report
|
88
|
+
e @result
|
89
|
+
end
|
90
|
+
|
84
91
|
# ========================================================================= #
|
85
92
|
# === run (run tag)
|
86
93
|
# ========================================================================= #
|
@@ -99,13 +106,6 @@ class Permutations < ::Bioroebe::CommandlineApplication # === Bioroebe::Permutat
|
|
99
106
|
report
|
100
107
|
end
|
101
108
|
|
102
|
-
# ========================================================================= #
|
103
|
-
# === report
|
104
|
-
# ========================================================================= #
|
105
|
-
def report
|
106
|
-
e @result
|
107
|
-
end
|
108
|
-
|
109
109
|
# ========================================================================= #
|
110
110
|
# === Bioroebe::Permutations[]
|
111
111
|
# ========================================================================= #
|
@@ -115,6 +115,33 @@ class Permutations < ::Bioroebe::CommandlineApplication # === Bioroebe::Permutat
|
|
115
115
|
|
116
116
|
end
|
117
117
|
|
118
|
+
# =========================================================================== #
|
119
|
+
# === Bioroebe.unique_two_paired_permutations
|
120
|
+
#
|
121
|
+
# This method will return all unique permutations of a given Array.
|
122
|
+
#
|
123
|
+
# The method will return an Array of all possible, unique combinations,
|
124
|
+
# as a pair of two entries per inner array.
|
125
|
+
#
|
126
|
+
# Invocation example:
|
127
|
+
#
|
128
|
+
# Bioroebe.unique_two_paired_permutations # Would yield an Array of 28 members.
|
129
|
+
#
|
130
|
+
# =========================================================================== #
|
131
|
+
def self.unique_two_paired_permutations(
|
132
|
+
array = %w( B E G I K L P S )
|
133
|
+
)
|
134
|
+
# ========================================================================= #
|
135
|
+
# Example: ["B", "E", "G", "I", "K", "L", "P", "S"]
|
136
|
+
# ========================================================================= #
|
137
|
+
all_permutations = array.permutation(2).to_a
|
138
|
+
all_unique_permutations = []
|
139
|
+
all_permutations.each {|this_array|
|
140
|
+
all_unique_permutations << this_array unless all_unique_permutations.include?(this_array.reverse)
|
141
|
+
}
|
142
|
+
return all_unique_permutations
|
143
|
+
end
|
144
|
+
|
118
145
|
# =========================================================================== #
|
119
146
|
# === Bioroebe.permutations
|
120
147
|
#
|
@@ -6,11 +6,6 @@ module Bioroebe
|
|
6
6
|
|
7
7
|
class ShowOrf < ::Bioroebe::CommandlineApplication
|
8
8
|
|
9
|
-
# ========================================================================= #
|
10
|
-
# === NAMESPACE
|
11
|
-
# ========================================================================= #
|
12
|
-
NAMESPACE = inspect
|
13
|
-
|
14
9
|
# ========================================================================= #
|
15
10
|
# === COLOURIZE_VERTICAL_TOKEN
|
16
11
|
# ========================================================================= #
|
@@ -11,10 +11,7 @@ class ShowOrf < ::Bioroebe::CommandlineApplication
|
|
11
11
|
# ========================================================================= #
|
12
12
|
def reset
|
13
13
|
super()
|
14
|
-
|
15
|
-
# === @namespace
|
16
|
-
# ======================================================================= #
|
17
|
-
@namespace = NAMESPACE
|
14
|
+
infer_the_namespace
|
18
15
|
# ======================================================================= #
|
19
16
|
# === @show_these_frames
|
20
17
|
#
|
@@ -9,7 +9,7 @@ module Bioroebe
|
|
9
9
|
# ========================================================================= #
|
10
10
|
# === VERSION
|
11
11
|
# ========================================================================= #
|
12
|
-
VERSION = '0.
|
12
|
+
VERSION = '0.12.24'
|
13
13
|
|
14
14
|
# ========================================================================= #
|
15
15
|
# === LAST_UPDATE
|
@@ -17,7 +17,7 @@ module Bioroebe
|
|
17
17
|
# This variable keeps track as to when the bioroebe project was last
|
18
18
|
# updated. The notation is: DD.MM.YYYY
|
19
19
|
# ========================================================================= #
|
20
|
-
LAST_UPDATE = '
|
20
|
+
LAST_UPDATE = '12.09.2023'
|
21
21
|
|
22
22
|
# ========================================================================= #
|
23
23
|
# === URL_TO_THE_DOCUMENTATION
|