class_docstr: Proximal operator of the ElasticNet regularization.
  
  Parameters
  ----------
  strength : `float`
      Level of ElasticNet regularization
  
  range : `tuple` of two `int`, default=`None`
      Range on which the prox is applied. If `None` then the prox is
      applied on the whole vector
  
  ratio : `float`, default=0
      The ElasticNet mixing parameter, with 0 <= ratio <= 1.
      For ratio = 0 this is ridge (L2) regularization
      For ratio = 1 this is lasso (L1) regularization
      For 0 < ratio < 1, the regularization is a linear combination
      of L1 and L2.
  
  positive : `bool`, default=`False`
      If True, apply the penalization together with a projection
      onto the set of vectors with non-negative entries
  
  Attributes
  ----------
  dtype : `{'float64', 'float32'}`
      Type of the arrays used.
code: def __init__(
      self,
      strength: float,
      ratio: float,
      range: tuple = None,
      positive=False,
  ):
      Prox.__init__(self, range)
      self.positive = positive
      self.strength = strength
      self.ratio = ratio
      self._prox = self._build_cpp_prox("float64")
  
file_path: tick/tick/prox/prox_elasticnet.py
imports: import numpy
  from .base import Prox
  from .build.prox import ProxElasticNetDouble
  from .build.prox import ProxElasticNetFloat
label_desc: Use image node_id 1 to create a new ProxElasticNet object from inherited base classes: Prox with example: obj = ProxElasticNet(strength, ratio, range, positive)