biggr_maps.map
==============

.. py:module:: biggr_maps.map


Classes
-------

.. autoapisummary::

   biggr_maps.map.Map
   biggr_maps.map.TextLabel
   biggr_maps.map.Node
   biggr_maps.map.MetaboliteNode
   biggr_maps.map.MultiMarkerNode
   biggr_maps.map.MidMarkerNode
   biggr_maps.map.Segment
   biggr_maps.map.Reaction
   biggr_maps.map.PlacementOptions
   biggr_maps.map.AutoReaction
   biggr_maps.map.AutoReactionWithOptionalMetabolites


Functions
---------

.. autoapisummary::

   biggr_maps.map.node_from_dict
   biggr_maps.map.cubic_bezier_bt
   biggr_maps.map.non_primary_scaling
   biggr_maps.map.default_text_offset


Module Contents
---------------

.. py:class:: Map(name: str, description: str, homepage: Optional[str] = None, schema: Optional[str] = None, canvas: Optional[Tuple[float, float, float, float]] = None)

   .. py:attribute:: name


   .. py:attribute:: description


   .. py:attribute:: homepage
      :value: None



   .. py:attribute:: schema
      :value: None



   .. py:attribute:: reactions


   .. py:attribute:: nodes


   .. py:attribute:: segments


   .. py:attribute:: labels


   .. py:attribute:: canvas
      :value: None



   .. py:method:: add_node(node: Optional[Node])


   .. py:method:: add_segment(segment: Segment)


   .. py:method:: add_reaction(reaction: Reaction)


   .. py:method:: add_label(label: TextLabel)


   .. py:method:: fit_canvas(spacing: float = 100, expand_only=False)


   .. py:method:: to_escher()


.. py:class:: TextLabel(x: float, y: float, text: str)

   .. py:attribute:: identifier
      :value: None



   .. py:attribute:: x


   .. py:attribute:: y


   .. py:attribute:: text


   .. py:method:: to_escher()


.. py:class:: Node(x: Optional[float] = None, y: Optional[float] = None)

   .. py:attribute:: identifier
      :value: None



   .. py:attribute:: node_type
      :value: None



   .. py:attribute:: x
      :value: None



   .. py:attribute:: y
      :value: None



   .. py:method:: to_escher()


   .. py:method:: copy()


.. py:class:: MetaboliteNode(bigg_id: str, name: str, x: Optional[float] = None, y: Optional[float] = None, label_x: Optional[float] = None, label_y: Optional[float] = None, node_is_primary: bool = False)

   Bases: :py:obj:`Node`


   .. py:attribute:: node_type
      :value: 'metabolite'



   .. py:attribute:: bigg_id


   .. py:attribute:: name


   .. py:attribute:: label_x
      :value: None



   .. py:attribute:: label_y
      :value: None



   .. py:attribute:: node_is_primary
      :value: False



.. py:class:: MultiMarkerNode(x: float, y: float)

   Bases: :py:obj:`Node`


   .. py:attribute:: node_type
      :value: 'multimarker'



.. py:class:: MidMarkerNode(x: float, y: float)

   Bases: :py:obj:`Node`


   .. py:attribute:: node_type
      :value: 'midmarker'



.. py:class:: Segment(from_node: Node, to_node: Node, b1: Optional[Tuple[float, float]] = None, b2: Optional[Tuple[float, float]] = None)

   .. py:attribute:: identifier
      :value: None



   .. py:attribute:: from_node


   .. py:attribute:: to_node


   .. py:attribute:: b1
      :value: None



   .. py:attribute:: b2
      :value: None



   .. py:method:: to_escher()


.. py:function:: node_from_dict(d: Dict[str, Any]) -> Node

.. py:class:: Reaction(name: str, bigg_id: str, label_x: float, label_y: float, mid_marker: MidMarkerNode, plus_multi_marker: Optional[MultiMarkerNode], minus_multi_marker: Optional[MultiMarkerNode], reversibility: bool = True, gene_reaction_rule: Optional[str] = None, genes: Optional[List[Dict[str, str]]] = None)

   .. py:attribute:: identifier
      :value: None



   .. py:attribute:: name


   .. py:attribute:: bigg_id


   .. py:attribute:: label_x


   .. py:attribute:: label_y


   .. py:attribute:: reversibility
      :value: True



   .. py:attribute:: mid_marker


   .. py:attribute:: multi_markers


   .. py:attribute:: metabolites
      :value: []



   .. py:attribute:: segments
      :value: []



   .. py:attribute:: gene_reaction_rule
      :value: None



   .. py:attribute:: genes
      :value: None



   .. py:method:: add_segment(segment: Segment)


   .. py:method:: add_metabolite(node: MetaboliteNode, coefficient: Union[float, int])


   .. py:method:: to_escher()


.. py:function:: cubic_bezier_bt(t, b0, b1, b2, b3)

.. py:function:: non_primary_scaling(x)

.. py:function:: default_text_offset(x)

.. py:class:: PlacementOptions(delta=math.pi * 0.15, delta_tolerance=0.5, no_primary_length_f=None, scale=3.0, b1_scale=0.3, b2_scale=0.8, text_y_correction=6, text_offset_f=None, placement_f=None)

   .. py:attribute:: delta
      :value: 0.47123889803846897



   .. py:attribute:: delta_tolerance
      :value: 0.5



   .. py:attribute:: scale
      :value: 3.0



   .. py:attribute:: b1_scale
      :value: 0.3



   .. py:attribute:: b2_scale
      :value: 0.8



   .. py:attribute:: text_y_correction
      :value: 6



   .. py:attribute:: placement_f
      :value: None



.. py:class:: AutoReaction(bigg_id: str, mid_marker: MidMarkerNode, angle: float, unit: float = 50, text_y_correction: float = 8, label_x: Optional[float] = None, label_y: Optional[float] = None, minus_multi_marker: Optional[Union[MultiMarkerNode, MidMarkerNode]] = None, plus_multi_marker: Optional[Union[MultiMarkerNode, MidMarkerNode]] = None, **kwargs)

   Bases: :py:obj:`Reaction`


   .. py:attribute:: angle


   .. py:attribute:: unit
      :value: 50



   .. py:method:: alternating_side_placement(i, delta, plus_minus)


   .. py:method:: same_side_placement(n, delta, plus_minus, absolute_side=0)


   .. py:method:: calculate_placement(ref_node, node, plus_minus, angle_delta, n, b1_b2, placement_opts)


   .. py:method:: add_metabolite(node: MetaboliteNode, coefficient: Union[float, int], b1_b2: Optional[Tuple[Optional[float], Optional[float]]] = None, placement_opts=None)


.. py:class:: AutoReactionWithOptionalMetabolites(*args, **kwargs)

   Bases: :py:obj:`AutoReaction`


   .. py:attribute:: optional_metabolites


   .. py:attribute:: finalized
      :value: False



   .. py:method:: add_optional_metabolite(node: MetaboliteNode, coefficient: float, b1_b2: Optional[Tuple[Optional[float], Optional[float]]])


