"""SRI remote viewing (Case C.8) – controlled remote perception using coordinates."""
import matplotlib.pyplot as plt
import numpy as np
from mercurial.core.neural_field import NeuralField2D
from mercurial.simulation.engine import SimulationEngine
[docs]
def run_sri_remote_viewing():
engine = SimulationEngine(dim=20)
engine.apply_empirical_parameters()
# 1. 2D neural field representing the viewer's visual cortex (size 32x32)
nx, ny = 32, 32
visual_field = NeuralField2D(nx, ny, dx=0.5, wc_params=engine.wc_params.__dict__)
# 2. Target pattern representing a geographic location (e.g., a mountain peak)
# Create a pattern: a Gaussian blob at a specific coordinate (simulating the target)
X, Y = np.meshgrid(np.linspace(-2, 2, nx), np.linspace(-2, 2, ny))
target_pattern = np.exp(-((X - 0.3) ** 2 + (Y + 0.5) ** 2) / 0.1) + 0.5 * np.exp(
-((X + 0.6) ** 2 + (Y - 0.2) ** 2) / 0.15
)
# 3. Simulate the remote viewing process
dt = 0.001
t_span = (0.0, 2.0)
steps = int((t_span[1] - t_span[0]) / dt)
# The coordinates are given to the viewer (simulated as an external input)
# We'll inject the target pattern directly as the DPR input (like the other cases)
for step in range(steps):
step * dt
# Remote viewing occurs over the entire simulation (the viewer concentrates)
# Inject the target pattern into the visual field (DPR)
P_ext = 5.0 * target_pattern
visual_field.step(dt, P_ext=P_ext)
# After simulation, compute correlation between final visual field and target pattern
final_vis = visual_field.E
correlation = np.corrcoef(final_vis.flatten(), target_pattern.flatten())[0, 1]
print(f"Correlation between final visual field and target pattern: {correlation:.3f}")
# Plot final visual field
plt.figure()
plt.imshow(final_vis, cmap="hot")
plt.colorbar()
plt.title("SRI remote viewing – Final visual cortex activity")
plt.show()
return correlation
if __name__ == "__main__":
run_sri_remote_viewing()