class_docstr: Test the ability to round-trip VCF files.
code: def test_roundtrip(
      self,
      expected_infos,
      expected_fmt,
      expected_fmt1,
      expected_fmt2,
      reader_excluded_info=None,
      reader_excluded_format=None,
      writer_excluded_info=None,
      writer_excluded_format=None,
  ):
      expected_records = [
          record.format(
              info=info, fmt=expected_fmt, efmts1=e1, efmts2=e2
          )
          for record, info, e1, e2 in zip(
              self.record_format_strings,
              expected_infos,
              expected_fmt1,
              expected_fmt2,
          )
      ]
      expected = self.header + "".join(expected_records)
      for info_map_pl in [False, True]:
          with vcf.VcfReader(
              test_utils.genomics_core_testdata(
                  "test_py_roundtrip.vcf"
              ),
              excluded_info_fields=reader_excluded_info,
              excluded_format_fields=reader_excluded_format,
              store_gl_and_pl_in_info_map=info_map_pl,
          ) as reader:
              records = list(reader.iterate())
              output_path = test_utils.test_tmpfile(
                  "test_roundtrip_tmpfile_{}.vcf".format(info_map_pl)
              )
              with vcf.VcfWriter(
                  output_path,
                  header=reader.header,
                  excluded_info_fields=writer_excluded_info,
                  excluded_format_fields=writer_excluded_format,
                  retrieve_gl_and_pl_from_info_map=info_map_pl,
              ) as writer:
                  for record in records:
                      writer.write(record)
  
          with open(output_path) as f:
              actual = f.read()
          self.assertEqual(actual, expected)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from absl.testing import absltest
  from absl.testing import parameterized
  from etils import epath
  from third_party.nucleus.io import vcf
  from third_party.nucleus.protos import reference_pb2
  from third_party.nucleus.protos import struct_pb2
  from third_party.nucleus.protos import variants_pb2
  from third_party.nucleus.testing import test_utils
  from third_party.nucleus.util import ranges
label_desc: Use image node_id 2 for calling the VcfRoundtripTests obj's underlying member method code with example usage: obj.test_roundtrip(expected_infos, expected_fmt, expected_fmt1, expected_fmt2, reader_excluded_info, reader_excluded_format, writer_excluded_info, writer_excluded_format) without return types