:param bwt_string: The string returned from bwt algorithm execution :param idx_original_string: A 0-based index of the string that was used to generate bwt_string at ordered rotations list :return: The string used to generate bwt_string when bwt was executed :raises TypeError: I
(bwt_string: str, idx_original_string: int)
| 91 | |
| 92 | |
| 93 | def reverse_bwt(bwt_string: str, idx_original_string: int) -> str: |
| 94 | """ |
| 95 | :param bwt_string: The string returned from bwt algorithm execution |
| 96 | :param idx_original_string: A 0-based index of the string that was used to |
| 97 | generate bwt_string at ordered rotations list |
| 98 | :return: The string used to generate bwt_string when bwt was executed |
| 99 | :raises TypeError: If the bwt_string parameter type is not str |
| 100 | :raises ValueError: If the bwt_string parameter is empty |
| 101 | :raises TypeError: If the idx_original_string type is not int or if not |
| 102 | possible to cast it to int |
| 103 | :raises ValueError: If the idx_original_string value is lower than 0 or |
| 104 | greater than len(bwt_string) - 1 |
| 105 | |
| 106 | >>> reverse_bwt("BNN^AAA", 6) |
| 107 | '^BANANA' |
| 108 | >>> reverse_bwt("aaaadss_c__aa", 3) |
| 109 | 'a_asa_da_casa' |
| 110 | >>> reverse_bwt("mnpbnnaaaaaa", 11) |
| 111 | 'panamabanana' |
| 112 | >>> reverse_bwt(4, 11) |
| 113 | Traceback (most recent call last): |
| 114 | ... |
| 115 | TypeError: The parameter bwt_string type must be str. |
| 116 | >>> reverse_bwt("", 11) |
| 117 | Traceback (most recent call last): |
| 118 | ... |
| 119 | ValueError: The parameter bwt_string must not be empty. |
| 120 | >>> reverse_bwt("mnpbnnaaaaaa", "asd") # doctest: +NORMALIZE_WHITESPACE |
| 121 | Traceback (most recent call last): |
| 122 | ... |
| 123 | TypeError: The parameter idx_original_string type must be int or passive |
| 124 | of cast to int. |
| 125 | >>> reverse_bwt("mnpbnnaaaaaa", -1) |
| 126 | Traceback (most recent call last): |
| 127 | ... |
| 128 | ValueError: The parameter idx_original_string must not be lower than 0. |
| 129 | >>> reverse_bwt("mnpbnnaaaaaa", 12) # doctest: +NORMALIZE_WHITESPACE |
| 130 | Traceback (most recent call last): |
| 131 | ... |
| 132 | ValueError: The parameter idx_original_string must be lower than |
| 133 | len(bwt_string). |
| 134 | >>> reverse_bwt("mnpbnnaaaaaa", 11.0) |
| 135 | 'panamabanana' |
| 136 | >>> reverse_bwt("mnpbnnaaaaaa", 11.4) |
| 137 | 'panamabanana' |
| 138 | """ |
| 139 | if not isinstance(bwt_string, str): |
| 140 | raise TypeError("The parameter bwt_string type must be str.") |
| 141 | if not bwt_string: |
| 142 | raise ValueError("The parameter bwt_string must not be empty.") |
| 143 | try: |
| 144 | idx_original_string = int(idx_original_string) |
| 145 | except ValueError: |
| 146 | raise TypeError( |
| 147 | "The parameter idx_original_string type must be int or passive" |
| 148 | " of cast to int." |
| 149 | ) |
| 150 | if idx_original_string < 0: |