code: def parse_ins_string(string):
      
      istart_markers = ["[","(","!"]
      iend_markers = ["]",")","!"]
  
      obs_names = []
  
      idx = 0
      while True:
          if idx >= len(string) - 1:
              break
          char = string[idx]
          if char in istart_markers:
              em = iend_markers[istart_markers.index(char)]
              # print("\n",idx)
              # print(string)
              # print(string[idx+1:])
              # print(string[idx+1:].index(em))
              # print(string[idx+1:].index(em)+idx+1)
              eidx = min(len(string),string[idx+1:].index(em)+idx+1)
              obs_name = string[idx+1:eidx]
              if obs_name.lower() != "dum":
                  obs_names.append(obs_name)
              idx = eidx + 1
          else:
              idx += 1
      return obs_names
docs: split up an instruction file line to get the observation names
  
      Parameters
      ----------
      string : str
          instruction file line
  
      Returns
      -------
      obs_names : list
          list of observation names