code: def FromFile(cls, in_path):
          
  
          with open(in_path, "rb") as infile:
              in_data = json.load(infile)
  
          if not ('trace', 'selectors') in in_data:
              raise ArgumentError("Invalid trace file format", keys=in_data.keys(), expected=('trace', 'selectors'))
  
          selectors = [DataStreamSelector.FromString(x) for x in in_data['selectors']]
          readings = [IOTileReading(x['time'], DataStream.FromString(x['stream']).encode(), x['value'], reading_id=x['reading_id']) for x in in_data['trace']]
  
          return SimulationTrace(readings, selectors=selectors)
docs: Load a previously saved ascii representation of this simulation trace.
  
          Args:
              in_path (str): The path of the input file that we should load.
  
          Returns:
              SimulationTrace: The loaded trace object.