code: def FromString(cls, desc):
          
          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)
docs: 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.