
    <i                     "    S SK r  " S S\5      rg)    Nc                       \ rS rSrSrS rS r " S S\5      r " S S\5      r	 " S	 S
\5      r
 " S S\5      r " S S\5      rS rS rS rS rS rS rS rSrg)Physics   Fc                      U R                   U   $ N__dict__selfitems     G/home/james-whalen/.local/lib/python3.13/site-packages/pyvis/physics.py__getitem__Physics.__getitem__   s    }}T""    c                 ,    [        U R                  5      $ r   )strr	   r   s    r   __repr__Physics.__repr__   s    4==!!r   c                       \ rS rSrSrS rSrg)Physics.barnesHut   z\
BarnesHut is a quadtree based gravity model.
This is the fastest, default and recommended.
c                 |    US   U l         US   U l        US   U l        US   U l        US   U l        US   U l        g Ngravitycentral_gravityspring_lengthspring_strengthdampingoverlapgravitationalConstantcentralGravityspringLengthspringConstantr   avoidOverlapr   paramss     r   __init__Physics.barnesHut.__init__   Q    )/	):D&"():";D & 7D"():";D!),DL &y 1Dr   r&   r#   r   r"   r%   r$   N__name__
__module____qualname____firstlineno____doc__r)   __static_attributes__ r   r   	barnesHutr      s    	
	2r   r5   c                       \ rS rSrSrS rSrg)Physics.forceAtlas2Based   a  
Force Atlas 2 has been develoved by Jacomi et all (2014)
for use with Gephi. The force Atlas based solver makes use
of some of the equations provided by them and makes use of
some of the barnesHut implementation in vis. The Main differences
are the central gravity model, which is here distance independent,
and repulsion being linear instead of quadratic. Finally, all node
masses have a multiplier based on the amount of connected edges
plus one.
c                 |    US   U l         US   U l        US   U l        US   U l        US   U l        US   U l        g r   r!   r'   s     r   r)   !Physics.forceAtlas2Based.__init__(   r+   r   r,   Nr-   r4   r   r   forceAtlas2Basedr7      s    			2r   r;   c                       \ rS rSrSrS rSrg)Physics.Repulsion0   z
The repulsion model assumes nodes have a simplified field
around them. Its force lineraly decreases from 1
(at 0.5*nodeDistace and smaller) to 0 (at 2*nodeDistance)
c                 h    US   U l         US   U l        US   U l        US   U l        US   U l        g Nnode_distancer   r   r   r   nodeDistancer#   r$   r%   r   r'   s     r   r)   Physics.Repulsion.__init__6   D     & 7D"():";D & 7D"():";D!),DLr   r#   r   rC   r%   r$   Nr-   r4   r   r   	Repulsionr=   0       	
	-r   rG   c                       \ rS rSrSrS rSrg)Physics.hierarchicalRepulsion=   zr
This model is based on the repulsion solver but the levels
are taken into accound and the forces
are normalized.
c                 h    US   U l         US   U l        US   U l        US   U l        US   U l        g r@   rB   r'   s     r   r)   &Physics.hierarchicalRepulsion.__init__C   rE   r   rF   Nr-   r4   r   r   hierarchicalRepulsionrJ   =   rH   r   rN   c                   *    \ rS rSrSrS rS rS rSrg)Physics.StabilizationJ   zC
This makes the network stabilized on load using default settings.
c                      U R                   U   $ r   r   r
   s     r   r   !Physics.Stabilization.__getitem__N   s    ==&&r   c                 J    SU l         SU l        SU l        SU l        SU l        g )NTi  2   F)enabled
iterationsupdateIntervalonlyDynamicEdgesfitr   s    r   r)   Physics.Stabilization.__init__Q   s'    DL"DO"$D$)D!DHr   c                     Xl         g r   )rV   r   statuss     r   toggle_stabilization*Physics.Stabilization.toggle_stabilizationX   s    !Lr   )rV   rZ   rW   rY   rX   N)	r.   r/   r0   r1   r2   r   r)   r_   r3   r4   r   r   StabilizationrP   J   s    		'		"r   ra   c                 <    SU l         U R                  5       U l        g )NT)rV   ra   stabilizationr   s    r   r)   Physics.__init__[   s    !//1r   c                 0    U R                  U5      U l         g r   )r5   r'   s     r   use_barnes_hutPhysics.use_barnes_hut_   s    /r   c                 >    U R                  U5      U l         SU l        g )Nr;   )r;   solverr'   s     r   use_force_atlas_2basedPhysics.use_force_atlas_2basedb   s     $ 5 5f =(r   c                 >    U R                  U5      U l        SU l        g )N	repulsion)rG   rm   ri   r'   s     r   use_repulsionPhysics.use_repulsionf   s    /!r   c                 >    U R                  U5      U l         SU l        g )NrN   )rN   ri   r'   s     r   use_hrepulsionPhysics.use_hrepulsionj   s    %)%?%?%G"-r   c                 :    U R                   R                  U5        g r   )rc   r_   r]   s     r   r_   Physics.toggle_stabilizationn   s    //7r   c                 2    [         R                  " U S SSS9$ )Nc                     U R                   $ r   r   )os    r   <lambda>!Physics.to_json.<locals>.<lambda>s   s    AJJr   Tr   )default	sort_keysindent)jsondumpsr   s    r   to_jsonPhysics.to_jsonq   s    zz.1& 	&r   )r5   rV   r;   rN   rm   ri   rc   N)r.   r/   r0   r1   engine_chosenr   r   objectr5   r;   rG   rN   ra   r)   rf   rj   rn   rq   r_   r   r3   r4   r   r   r   r      sp    M#"2F 226 2&-F -- -" ""20)".8&r   r   )r}   r   r   r4   r   r   <module>r      s    p&f p&r   