code: def test_generate_signal():
      # Inputs for generate_signal
      dimensions = np.array(
          [10, 10, 10]
      )  # What is the size of the brain
      feature_size = [3]
      feature_type = ["cube"]
      feature_coordinates = np.array([[5, 5, 5]])
      signal_magnitude = [30]
  
      # Generate a volume representing the location and quality of the signal
      volume = sim.generate_signal(
          dimensions=dimensions,
          feature_coordinates=feature_coordinates,
          feature_type=feature_type,
          feature_size=feature_size,
          signal_magnitude=signal_magnitude,
      )
  
      assert np.all(volume.shape == dimensions), "Check signal shape"
      assert (
          np.max(volume) == signal_magnitude
      ), "Check signal magnitude"
      assert np.sum(volume > 0) == math.pow(
          feature_size[0], 3
      ), "Check feature size"
      assert (
          volume[5, 5, 5] == signal_magnitude
      ), "Check signal location"
      assert volume[5, 5, 1] == 0, "Check noise location"
  
      feature_coordinates = np.array([[5, 5, 5], [3, 3, 3], [7, 7, 7]])
  
      # Check feature size is correct
      volume = sim.generate_signal(
          dimensions=dimensions,
          feature_coordinates=feature_coordinates,
          feature_type=["loop", "cavity", "sphere"],
          feature_size=[3],
          signal_magnitude=signal_magnitude,
      )
      assert volume[5, 5, 5] == 0, "Loop is empty"
      assert volume[3, 3, 3] == 0, "Cavity is empty"
      assert volume[7, 7, 7] != 0, "Sphere is not empty"
  
      # Check feature size manipulation
      volume = sim.generate_signal(
          dimensions=dimensions,
          feature_coordinates=feature_coordinates,
          feature_type=["loop", "cavity", "sphere"],
          feature_size=[1],
          signal_magnitude=signal_magnitude,
      )
      assert volume[5, 6, 6] == 0, "Loop is too big"
      assert volume[3, 5, 5] == 0, "Cavity is too big"
      assert volume[7, 9, 9] == 0, "Sphere is too big"
  
      # Check that out of bounds feature coordinates are corrected
      feature_coordinates = np.array([0, 2, dimensions[2]])
      x, y, z = sim._insert_idxs(
          feature_coordinates, feature_size[0], dimensions
      )
      assert x[1] - x[0] == 2, "x min not corrected"
      assert y[1] - y[0] == 3, "y was corrected when it shouldn't be"
      assert z[1] - z[0] == 1, "z max not corrected"
  
      # Check that signal patterns are created
      feature_coordinates = np.array([[5, 5, 5]])
      volume = sim.generate_signal(
          dimensions=dimensions,
          feature_coordinates=feature_coordinates,
          feature_type=feature_type,
          feature_size=feature_size,
          signal_magnitude=signal_magnitude,
          signal_constant=0,
      )
      assert volume[4:7, 4:7, 4:7].std() > 0, "Signal is constant"
  
file_path: brainiak/tests/utils/test_fmrisim.py
imports: import numpy
  import math
  from brainiak.utils import fmrisim
  import pytest
  from itertools import product
label_desc: Use image node_id 1 for calling a global function with example usage: test_generate_signal() without return types