Ejemplo n.º 1
0
 def set_noise_end(self, value: float) -> None:
     if value < self._noiseStart:
         ErrorHandler().gui_message_box(
             rcx_exception=ParametersParseException(
                 message=ParametersParseException.START_NOISE_LE_END.message,
                 long_message=ParametersParseException.START_NOISE_LE_END.long_message,
             )
         )
     else:
         self._noiseEnd = value
Ejemplo n.º 2
0
 def set_test_info(self, value: str) -> None:
     try:
         self._testInfo = int(value)
     except ValueError as rcx_value_error:
         ErrorHandler().gui_message_box(
             rcx_exception=ParametersParseException(
                 message=ParametersParseException.INFORMATION_NOT_SERIALIZABLE.message,
                 long_message=ParametersParseException.INFORMATION_NOT_SERIALIZABLE.long_message,
                 previous=rcx_value_error
             )
         )
Ejemplo n.º 3
0
    def codec_type(self) -> EnumCodecType:
        """
        :return: Type of Codec like EnumCodecType
        """
        codec_type: Optional[str] = self._arguments[self.__CODEC_OPTION]

        if codec_type is None or codec_type == EnumCodecType.SINGLE.value:
            return EnumCodecType.SINGLE
        elif codec_type == EnumCodecType.CASCADE.value:
            return EnumCodecType.CASCADE
        else:
            raise ParametersParseException(long_message="""Unknown codec type""")
Ejemplo n.º 4
0
    def app_mode(self) -> EnumAppMode:
        # noinspection PyUnresolvedReferences
        app_mode: Optional[str] = self._arguments[AppParser.__MODE_PARAMETERS]

        if app_mode is None or app_mode == EnumAppMode.GUI.value:
            return EnumAppMode.GUI
        elif app_mode == EnumAppMode.CONSOLE.value:
            return EnumAppMode.CONSOLE
        else:
            raise ParametersParseException(
                message=ParametersParseException.APPLICATION_MODE_UNDEFINED.
                message,
                long_message=ParametersParseException.
                APPLICATION_MODE_UNDEFINED.long_message,
                additional_information=[app_mode])
Ejemplo n.º 5
0
    def noise_type(self) -> EnumNoiseMode:
        """
        :return: Type of Codec like EnumCodecType
        """
        if self._arguments[self.__NOISE_TYPE_OPTION] is not None:
            noise_type: Optional[str] = self._arguments[self.__NOISE_TYPE_OPTION]
        else:
            noise_type = None

        if noise_type is None or noise_type == EnumNoiseMode.SINGLE.value:
            return EnumNoiseMode.SINGLE
        elif noise_type == EnumNoiseMode.PACKAGE.value:
            return EnumNoiseMode.CASCADE
        elif noise_type == EnumNoiseMode.MIX.value:
            return EnumNoiseMode.MIX
        else:
            raise ParametersParseException(long_message="""Unknown codec type""")
Ejemplo n.º 6
0
    def reestablish(self, information: List[int]) -> List[int]:
        log.debug("Used Un Interleaver for package {0}".format(information))
        answer: List[int] = [0] * len(information)
        # noinspection PyBroadException
        try:
            # целочисленное деление с округлением вверх
            res_div: int = math.ceil(len(information) / self.lengthSmashing)
            for x in range(self.lengthSmashing):
                for y in range(res_div):
                    if len(information) > x * res_div + y:
                        answer[x + y * self.lengthSmashing] = information[x * res_div + y]
        except IndexError:
            if len(information) % self.lengthSmashing != 0:
                raise ParametersParseException(
                    message=ParametersParseException.INTERLEAVER_SETTING.message,
                    long_message=ParametersParseException.INTERLEAVER_SETTING.long_message,
                )

        return answer
Ejemplo n.º 7
0
 def shuffle(self, information: List[int]) -> List[int]:
     log.debug("Used interleaver for package {0}".format(information))
     answer: List[int] = []
     try:
         for x in range(self.lengthSmashing):
             is_end: bool = False
             counter: int = 0
             while not is_end:
                 if (counter * self.lengthSmashing + x) < len(information):
                     answer.append(information[counter * self.lengthSmashing + x])
                 else:
                     is_end = True
                 counter += 1
     except IndexError:
         if len(information) % self.lengthSmashing != 0:
             raise ParametersParseException(
                 message=ParametersParseException.INTERLEAVER_SETTING.message,
                 long_message=ParametersParseException.INTERLEAVER_SETTING.long_message,
             )
     return answer
Ejemplo n.º 8
0
 def _do_noise(self, information: list, noise_probability: float) -> list:
     if self._noiseMode == EnumNoiseMode.SINGLE:
         return chanel.Chanel().gen_interference(information=information,
                                                 straight=noise_probability)
     elif self._noiseMode == EnumNoiseMode.PACKAGE:
         return chanel.Chanel().generate_package_interference(
             information=information,
             length_of_block=self._noisePackageLength,
             frequency_of_block=self._noisePackagePeriod)
     elif self._noiseMode == EnumNoiseMode.MIX:
         single_package: list = chanel.Chanel(
         ).generate_package_interference(
             information=information,
             length_of_block=self._noisePackageLength,
             frequency_of_block=self._noisePackagePeriod)
         return chanel.Chanel().generate_package_interference(
             information=single_package,
             length_of_block=self._noisePackageLength,
             frequency_of_block=self._noisePackagePeriod)
     else:
         raise ParametersParseException(
             message=ParametersParseException.NOISE_MODE_UNDEFINED.message,
             long_message=ParametersParseException.NOISE_MODE_UNDEFINED.
             long_message)