class_docstr: Representation of the attacking object used in the paper.
class_docstr_tok: ["Representation","of","the","attacking","object","used","in","the","paper","."]
docstr: :param theta: List of the laser beam parameters, passed as List int the order:
      wavelength[nm], slope angle[radians], bias[pixels], width[pixels].
  :returns: New class object based on :theta.
docstr_tok: [":","param","theta",":","List","of","the","laser","beam","parameters",",","passed","as","List","int","the","order",":","wavelength","[","nm","]",",","slope","angle","[","radians","]",",","bias","[","pixels","]",",","width","[","pixels","]",".",":","returns",":","New","class","object","based","on",":","theta","."]
code: def from_numpy(theta: np.ndarray) -> "LaserBeam":
      """
      :param theta: List of the laser beam parameters, passed as List int the order:
          wavelength[nm], slope angle[radians], bias[pixels], width[pixels].
      :returns: New class object based on :theta.
      """
      return LaserBeam(
          wavelength=theta[0],
          line=Line(theta[1], theta[2]),
          width=theta[3],
      )
  
imports: import logging
  from typing import Callable, List, Optional, Tuple, Union, Any
  import numpy
  from art.attacks.attack import EvasionAttack
  from art.attacks.evasion.laser_attack.algorithms import greedy_search
  from art.attacks.evasion.laser_attack.utils import AdversarialObject, AdvObjectGenerator, DebugInfo, ImageGenerator, Line, wavelength_to_rgb
label_desc: Use image node_id 4 for calling the LaserBeam obj's underlying member method code with example usage: obj.from_numpy(theta) and returns: LaserBeam