def FromString(cls, desc):
        """Create a new stimulus from a description string.

        The string must have the format:

        [time: ][system ]input X = Y
        where X and Y are integers.  The time, if given must
        be a time_interval, which is an integer followed by a
        time unit such as second(s), minute(s), etc.

        Args:
            desc (str): A string description of the stimulus.

        Returns:
            SimulationStimulus: The parsed stimulus object.
        """
        if language.stream is None:
            language.get_language()

        parse_exp = Optional(time_interval('time') - Literal(':').suppress()) - language.stream('stream') - Literal('=').suppress() - number('value')

        try:
            data = parse_exp.parseString(desc)
            time = 0
            if 'time' in data:
                time = data['time'][0]

            return SimulationStimulus(time, data['stream'][0], data['value'])
        except (ParseException, ParseSyntaxException):
            raise ArgumentError("Could not parse stimulus descriptor", descriptor=desc)
Create a new stimulus from a description string.

        The string must have the format:

        [time: ][system ]input X = Y
        where X and Y are integers.  The time, if given must
        be a time_interval, which is an integer followed by a
        time unit such as second(s), minute(s), etc.

        Args:
            desc (str): A string description of the stimulus.

        Returns:
            SimulationStimulus: The parsed stimulus object.