docstr: ...Test multiple simulations via SimuHawkesMulti vs. single Hawkes
  
  See that multiple simulations has same attributes as a single Hawkes
  simulation, but different results
code: def test_simu_hawkes_multi_attrs(self):
      """...Test multiple simulations via SimuHawkesMulti vs. single Hawkes
  
      See that multiple simulations has same attributes as a single Hawkes
      simulation, but different results
      """
  
      hawkes = SimuHawkes(
          kernels=self.kernels,
          baseline=self.baseline,
          end_time=10,
          verbose=False,
          seed=504,
      )
  
      multi = SimuHawkesMulti(hawkes, n_threads=4, n_simulations=10)
      multi.simulate()
  
      hawkes.simulate()
  
      np.testing.assert_array_equal(
          hawkes.simulation_time, multi.simulation_time
      )
      np.testing.assert_array_equal(hawkes.n_nodes, multi.n_nodes)
      np.testing.assert_array_equal(hawkes.end_time, multi.end_time)
      np.testing.assert_array_equal(hawkes.max_jumps, multi.max_jumps)
      np.testing.assert_array_equal(
          hawkes.spectral_radius(), multi.spectral_radius
      )
  
      self.assertTrue(
          all(
              np.array_equal(hawkes.mean_intensity(), np.array(x))
              for x in multi.mean_intensity
          )
      )
  
      self.assertFalse(
          np.array_equal(hawkes.n_total_jumps, multi.n_total_jumps)
      )
  
file_path: tick/tick/hawkes/simulation/tests/simu_hawkes_multi_test.py
imports: import unittest
  import numpy
  from tick.base import TimeFunction
  from tick.hawkes import SimuHawkes, HawkesKernelExp, HawkesKernelSumExp, HawkesKernel0, HawkesKernelPowerLaw, HawkesKernelTimeFunc, SimuHawkesMulti
label_desc: Use image node_id 2 for calling the Test obj's underlying member method code with example usage: obj.test_simu_hawkes_multi_attrs() without return types