
    iK                         d Z ddlZddlZddlmZ ddlmZ ddlmZ  ee      j                  j                  Z
e
dz  ZdZdZ G d	 d
      Z G d d      ZdedefdZdefdZy)u   
EMF Layers — Schumann (L1), Individual (L2), and Perturbation (L3)
Each layer outputs markdown-formatted state to memory/ directory.
    N)Path)datetime)LiteralmemorygRQ@   c                   D    e Zd ZdZd Zdeded   fdZefdede	de	fdZ
y	)
SchumannLayerz
    Layer 1: Schumann Resonance
    The universal Earth baseline carrier at 7.83 Hz.
    Shared across all ghojualamanchu instances.
    c                 D    t         | _        d| _        d| _        d| _        y )NgroundHOLDr   )SCHUMANN_HZfrequency_hzrolestatecycle_countselfs    //home/workspace/ghojualamanchu-v3/emf/layers.py__init__zSchumannLayer.__init__   s     '	
    beatreturnINHALEEXHALEr   c                 P    |t         z  }|t         dz  k  ry|dt         z  dz  k  ryy)z,Return breath phase for a given beat number.   r      r   r   BREATH_CYCLEr   r   breath_positions      r   breath_phasezSchumannLayer.breath_phase   4    -\Q..q</144r   
output_dirc                     | j                  |      }|| _        |j                  dd       |dz  }t        j                         j                         }d| d| d| d| j                   d|d	k(  rd
n|dk(  rdnd d}|j                  |       |S )z$Write earth-breath.md for this beat.Tparentsexist_okearth-breath.mdu1   # Earth Breath — Schumann Layer

## Timestamp
 

## Beat
 

## Phase
 

## Frequency
 z5 Hz (Schumann resonance)

## Description
Earth field r   chargingr   dischargingzat equilibriumub   

## Layer Role
Ground — universal baseline carrier shared across all ghojualamanchu instances.
)r#   r   mkdirr   now	isoformatr   
write_text)r   r   r%   phasepathtscontents          r   writezSchumannLayer.write(   s    !!$'
5--\\^%%'      	   !H,Z5HCT-Zjk l( 	 r   N)__name__
__module____qualname____doc__r   intr   r#   
MEMORY_DIRr   r8    r   r   r	   r	      sD    
 1K)L  3= # 4  r   r	   c                   j    e Zd ZdZefdefdZdedefdZdefdZde	de
d   fd	Zefde	d
edefdZy)IndividualLayerz
    Layer 2: Individual Heartbeat
    Instance-specific resonance, tunable.
    Offset from Schumann creates beat frequency.
    hzc                 X    || _         d| _        d| _        d| _        d| _        d| _        y )N	signatureT)g?g      4@r   r   )r   r   tunablehz_ranger   
beat_countr   rB   s     r   r   zIndividualLayer.__init__M   s-    	#
r   r   c                 t    t        | j                  d   t        | j                  d   |            }|| _        |S )z1Tune the individual frequency within valid range.r      )maxrF   minr   rH   s     r   set_hzzIndividualLayer.set_hzU   s4    q!3t}}Q'7#<=	r   c                 :    t        | j                  t        z
        S )z/Beat frequency created by offset from Schumann.)absr   r   r   s    r   beat_frequency_with_schumannz,IndividualLayer.beat_frequency_with_schumann[   s    4$${233r   r   r   c                 P    |t         z  }|t         dz  k  ry|dt         z  dz  k  ryy)z&Return breath phase for this instance.r   r   r   r   r   r   r!   s      r   r#   zIndividualLayer.breath_phase_   r$   r   r%   c                    | j                  |      }|| _        |j                  dd       |dz  }t        j                         j                         }| j                         }d| d| d| d| j                   d|d	d
| j                  d    d| j                  d    d|dk(  rdn|dk(  rdnd d}|j                  |       |S )z#Write self-breath.md for this beat.Tr'   zself-breath.mdu2   # Self Breath — Individual Layer

## Timestamp
 r+   r,   r-   z: Hz (instance-specific)

## Beat Frequency with Schumann
 z.3fz Hz

## Hz Range
 r   u    – rJ   z# Hz (tunable)

## Description
Self r   r.   r   r/   stableup   

## Layer Role
Signature — unique per-instance resonance distinguishing this ghojualamanchu from all others.
)
r#   r   r0   r   r1   r2   rP   r   rF   r3   )r   r   r%   r4   r5   r6   	beat_freqr7   s           r   r8   zIndividualLayer.writei   s   !!$'
5,,\\^%%'557	      	   C  --5q)* + X%jEX<M=S[\ ]+4 	 r   N)r9   r:   r;   r<   r   floatr   rM   rP   r=   r   r#   r>   r   r8   r?   r   r   rA   rA   G   so    
 $/ 5  5 4e 4 1K)L  3= ## #4 # #r   rA   r   r   c                 P    | t         z  }|t         dz  k  ry|dt         z  dz  k  ryy)z4Utility: return INHALE/EXHALE/HOLD for a given beat.r   r   r   r   r   r   )r   bps     r   r#   r#      s4    		B	LA	a,!#	#r   c                      t         dz  } | j                         si S | j                         }i }|j                  d      D ]3  }|j	                  d      s|j                  d      j                         }5 |S )z#Read current earth-breath.md state.r*   
z##z## )r>   exists	read_textsplit
startswithlstripstrip)r5   r7   r   linekeys        r   read_earth_breathrb      sn    ))D;;=	nnGEd# -??4 ++e$**,C- Lr   )r<   timejsonpathlibr   r   typingr   __file__parentBASE_DIRr>   r   r    r	   rA   r=   strr#   dictrb   r?   r   r   <module>rl      s{        >  '' 
2 2jE EPs s 4 r   