|
|
import sys |
|
|
import os |
|
|
|
|
|
|
|
|
current_dir = os.path.dirname(os.path.abspath(__file__)) |
|
|
|
|
|
|
|
|
if current_dir not in sys.path: |
|
|
sys.path.insert(0, current_dir) |
|
|
|
|
|
|
|
|
from flc_core import flc_encode_file, flc_decode_file, cosine_similarity_bytes |
|
|
|
|
|
import streamlit as st |
|
|
import os |
|
|
import tempfile |
|
|
import numpy as np |
|
|
from PIL import Image |
|
|
from flc_core import flc_encode_file, flc_decode_file, cosine_similarity_bytes |
|
|
|
|
|
st.set_page_config(page_title="FLC v1.3 | How it Works", layout="wide") |
|
|
|
|
|
|
|
|
st.markdown(""" |
|
|
<style> |
|
|
.reportview-container { background: #0e1117; } |
|
|
.main { color: #e0e0e0; } |
|
|
h1, h2, h3 { color: #f1c40f !important; } |
|
|
.stAlert { background-color: #1a1c24; border: 1px solid #f1c40f; } |
|
|
</style> |
|
|
""", unsafe_allow_html=True) |
|
|
|
|
|
st.title("π Fibonacci Lattice Compression (FLC)") |
|
|
st.markdown(""" |
|
|
**FLC v1.3** is a bio-inspired data compression architecture. Unlike standard ZIP or JPEG formats, |
|
|
FLC uses the **Golden Ratio ($\Phi$)** to decide which parts of your data are "essential" and which are "noise." |
|
|
""") |
|
|
|
|
|
|
|
|
with st.expander("π Step-by-Step: How does the 'Secret Sauce' work?"): |
|
|
col1, col2, col3 = st.columns(3) |
|
|
|
|
|
with col1: |
|
|
st.markdown("### 1. Spectral Projection") |
|
|
st.write(""" |
|
|
We treat your data like a sound wave. Using a **DCT (Discrete Cosine Transform)**, |
|
|
we project the bits into frequency space. |
|
|
* **Low Frequencies:** The "skeleton" of your data. |
|
|
* **High Frequencies:** The "dust" and fine details. |
|
|
""") |
|
|
|
|
|
with col2: |
|
|
st.markdown("### 2. The Golden Filter") |
|
|
st.write(""" |
|
|
Instead of treating all frequencies equally, FLC uses **Fibonacci Bands**. |
|
|
We compress the 'dust' using steps based on the **Golden Ratio ($\Phi \approx 1.618$)**. |
|
|
As the frequency increases, the compression gets exponentially more aggressive. |
|
|
""") |
|
|
|
|
|
with col3: |
|
|
with st.container(): |
|
|
st.markdown("### 3. Fibonacci Coding") |
|
|
st.write(""" |
|
|
Standard computers use 8-bit bytes. FLC uses **Fibonacci Binary**. |
|
|
It's a "universal code" that uses the sum of Fibonacci numbers to represent values, |
|
|
making the compressed stream incredibly resilient and dense. |
|
|
""") |
|
|
|
|
|
st.divider() |
|
|
|
|
|
|
|
|
st.header("π§ͺ Test the Horizon") |
|
|
with st.sidebar: |
|
|
st.header("ποΈ Architecture Params") |
|
|
st.info("Adjusting these changes how the 'Secret Sauce' math is applied.") |
|
|
|
|
|
quality_map = { |
|
|
"High Compression (Lossy)": {"bands": 6, "step": 0.08, "desc": "Aggressive $\Phi$-scaling."}, |
|
|
"Balanced": {"bands": 12, "step": 0.005, "desc": "The Golden Mean of fidelity."}, |
|
|
"Near-Lossless": {"bands": 24, "step": 0.0001, "desc": "Full spectral recovery."} |
|
|
} |
|
|
|
|
|
tier = st.radio("Fidelity Tier", list(quality_map.keys()), index=1) |
|
|
st.caption(quality_map[tier]["desc"]) |
|
|
|
|
|
st.subheader("Visual Overlays") |
|
|
show_spiral = st.checkbox("Fibonacci Spiral Outlines", value=True) |
|
|
show_ring = st.checkbox("Event Horizon Ring", value=True) |
|
|
|
|
|
uploaded_file = st.file_uploader("Upload a file (Image, Text, or Binary)", type=["bin", "png", "jpg", "txt"]) |
|
|
|
|
|
if uploaded_file is not None: |
|
|
with tempfile.TemporaryDirectory() as tmpdir: |
|
|
in_path = os.path.join(tmpdir, "input.bin") |
|
|
out_flc = os.path.join(tmpdir, "output.flc") |
|
|
out_gif = os.path.join(tmpdir, "unzip.gif") |
|
|
recovered_path = os.path.join(tmpdir, "recovered.bin") |
|
|
|
|
|
with open(in_path, "wb") as f: |
|
|
f.write(uploaded_file.getbuffer()) |
|
|
|
|
|
if st.button("RUN HOLOGRAPHIC RECONSTRUCTION"): |
|
|
with st.status("Initializing Fibonacci Manifolds...", expanded=True) as status: |
|
|
st.write("Transforming data to Frequency Space...") |
|
|
enc = flc_encode_file( |
|
|
in_path, out_flc, unzip_gif=out_gif, |
|
|
n_bands=quality_map[tier]["bands"], |
|
|
base_step=quality_map[tier]["step"] |
|
|
) |
|
|
|
|
|
st.write("Applying $\Phi$-scaled quantization...") |
|
|
dec = flc_decode_file(out_flc, recovered_path) |
|
|
|
|
|
st.write("Generating Holographic Unzip visualization...") |
|
|
status.update(label="Reconstruction Complete!", state="complete", expanded=False) |
|
|
|
|
|
|
|
|
st.subheader("π Compression Performance") |
|
|
c1, c2, c3, c4 = st.columns(4) |
|
|
c1.metric("Original Size", f"{enc['n_bytes']} B") |
|
|
c2.metric("Compressed Size", f"{enc['payload_len']} B") |
|
|
c3.metric("Ratio", f"{enc['ratio']:.2%}") |
|
|
|
|
|
|
|
|
orig_data = open(in_path, "rb").read() |
|
|
reco_data = open(recovered_path, "rb").read() |
|
|
fidelity = cosine_similarity_bytes(orig_data, reco_data) |
|
|
c4.metric("Data Fidelity", f"{fidelity*100:.2f}%") |
|
|
|
|
|
st.divider() |
|
|
|
|
|
|
|
|
st.header("ποΈ The Unzip Sequence") |
|
|
st.markdown(""" |
|
|
This animation shows the **Progressive Reconstruction**. |
|
|
The 'Hologram' on the left shows the frequency data being added band-by-band. |
|
|
The 'Spiral' on the right shows the bits filling the Fibonacci tiles in real-time. |
|
|
""") |
|
|
|
|
|
if os.path.exists(out_gif): |
|
|
st.image(out_gif, use_container_width=True) |
|
|
|
|
|
st.info("π‘ Notice how the general shape appears first, and the fine details (noise) appear last. This is the hallmark of Spectral Compression.") |
|
|
|
|
|
with open(out_flc, "rb") as f: |
|
|
st.download_button("π₯ Download Encoded .FLC File", f, file_name="demo.flc") |
|
|
|
|
|
else: |
|
|
st.warning("Please upload a file to visualize the Fibonacci transformation.") |