text: from tensorboardX import SummaryWriter
  from tensorboard.compat.tensorflow_stub.pywrap_tensorflow import PyRecordReader_New
  from tensorboardX.proto import event_pb2
  
  import numpy as np
  import pytest
  import unittest
  import time
  freqs = [262, 294, 330, 349, 392, 440, 440, 440, 440, 440, 440]
  
  true_positive_counts = [75, 64, 21, 5, 0]
  false_positive_counts = [150, 105, 18, 0, 0]
  true_negative_counts = [0, 45, 132, 150, 150]
  false_negative_counts = [0, 11, 54, 70, 75]
  precision = [0.3333333, 0.3786982, 0.5384616, 1.0, 0.0]
  recall = [1.0, 0.8533334, 0.28, 0.0666667, 0.0]
  
  
  class WriterTest(unittest.TestCase):
      def test_flush(self):
          N_TEST = 5
          w = SummaryWriter(flush_secs=1)
          f = w.file_writer.event_writer._ev_writer._file_name
          for i in range(N_TEST):
              w.add_scalar('a', i)
              time.sleep(2)
          r = PyRecordReader_New(f)
          r.GetNext()  # meta data, so skip
          for _ in range(N_TEST):  # all of the data should be flushed
              r.GetNext()
  
      def test_flush_timer_is_long_so_data_is_not_there(self):
          with self.assertRaises(BaseException):
              N_TEST = 5
              w = SummaryWriter(flush_secs=20)
              f = w.file_writer.event_writer._ev_writer._file_name
              for i in range(N_TEST):
                  w.add_scalar('a', i)
                  time.sleep(2)
              r = PyRecordReader_New(f)
              r.GetNext()  # meta data, so skip
              for _ in range(N_TEST):  # missing data
                  r.GetNext()
  
      def test_flush_after_close(self):
          N_TEST = 5
          w = SummaryWriter(flush_secs=20)
          f = w.file_writer.event_writer._ev_writer._file_name
          for i in range(N_TEST):
              w.add_scalar('a', i)
              time.sleep(2)
          w.close()
          r = PyRecordReader_New(f)
          r.GetNext()  # meta data, so skip
          for _ in range(N_TEST):  # all of the data should be flushed
              r.GetNext()
  
      def test_flush(self):
          N_TEST = 5
          w = SummaryWriter(flush_secs=20)
          f = w.file_writer.event_writer._ev_writer._file_name
          for i in range(N_TEST):
              w.add_scalar('a', i)
              time.sleep(2)
          w.flush()
          r = PyRecordReader_New(f)
          r.GetNext()  # meta data, so skip
          for _ in range(N_TEST):  # all of the data should be flushed
              r.GetNext()
  
      def test_auto_close(self):
          pass
  
      def test_writer(self):
          with SummaryWriter() as writer:
              sample_rate = 44100
  
              n_iter = 0
              writer.add_scalar('data/scalar_systemtime', 0.1, n_iter)
              writer.add_scalar('data/scalar_customtime', 0.2, n_iter, walltime=n_iter)
              writer.add_scalars('data/scalar_group', {"xsinx": n_iter * np.sin(n_iter),
                                                       "xcosx": n_iter * np.cos(n_iter),
                                                       "arctanx": np.arctan(n_iter)}, n_iter)
              x = np.zeros((32, 3, 64, 64))  # output from network
              writer.add_images('Image', x, n_iter)  # Tensor
              writer.add_image_with_boxes('imagebox',
                                          np.zeros((3, 64, 64)),
                                          np.array([[10, 10, 40, 40], [40, 40, 60, 60]]),
                                          n_iter)
              x = np.zeros(sample_rate * 2)
  
              writer.add_audio('myAudio', x, n_iter)
              writer.add_video('myVideo', np.random.rand(16, 48, 1, 28, 28).astype(np.float32), n_iter)
              writer.add_text('Text', 'text logged at step:' + str(n_iter), n_iter)
              writer.add_text('markdown Text', '''a|b\n-|-\nc|d''', n_iter)
              writer.add_histogram('hist', np.random.rand(100, 100), n_iter)
              writer.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand(
                  100), n_iter)  # needs tensorboard 0.4RC or later
              writer.add_pr_curve_raw('prcurve with raw data', true_positive_counts,
                                      false_positive_counts,
                                      true_negative_counts,
                                      false_negative_counts,
                                      precision,
                                      recall, n_iter)
              # export scalar data to JSON for external processing
              writer.export_scalars_to_json("./all_scalars.json")
              imgs = []
              for i in range(5):
                  imgs.append(np.ones((3, 100, 110)))
              with SummaryWriter() as w:
                  w.add_images('img_list', imgs, dataformats='CHW')