code: def _write_instrument(
      self, data: Dict[InstKT, InstVT] = None
  ) -> None:
      if not data:
          with self.uri.open("w") as _:
              pass
          return
  
      res = []
      for inst, v_list in data.items():
          _df = pd.DataFrame(
              v_list,
              columns=[
                  self.INSTRUMENT_START_FIELD,
                  self.INSTRUMENT_END_FIELD,
              ],
          )
          _df[self.SYMBOL_FIELD_NAME] = inst
          res.append(_df)
  
      df = pd.concat(res, sort=False)
      df.loc[
          :,
          [
              self.SYMBOL_FIELD_NAME,
              self.INSTRUMENT_START_FIELD,
              self.INSTRUMENT_END_FIELD,
          ],
      ].to_csv(
          self.uri, header=False, sep=self.INSTRUMENT_SEP, index=False
      )
      df.to_csv(
          self.uri,
          sep="\t",
          encoding="utf-8",
          header=False,
          index=False,
      )
  
imports: import struct
  from pathlib import Path
  from typing import Iterable, Union, Dict, Mapping, Tuple, List
  import numpy
  import pandas
  from qlib.utils.time import Freq
  from qlib.utils.resam import resam_calendar
  from qlib.config import C
  from qlib.data.cache import H
  from qlib.log import get_module_logger
  from qlib.data.storage import CalendarStorage, InstrumentStorage, FeatureStorage, CalVT, InstKT, InstVT
label_desc: Use image node_id 3 for calling the FileInstrumentStorage obj's underlying member method code with example usage: obj._write_instrument(data) without return types