neuralworm commited on
Commit
4c550c4
·
verified ·
1 Parent(s): af3a0b7

Update tests/test_components.py

Browse files
Files changed (1) hide show
  1. tests/test_components.py +48 -2
tests/test_components.py CHANGED
@@ -1,7 +1,9 @@
1
  import torch
 
2
  from cognitive_mapping_probe.llm_iface import get_or_load_model
3
  from cognitive_mapping_probe.resonance_seismograph import run_silent_cogitation_seismic
4
  from cognitive_mapping_probe.concepts import get_concept_vector, _get_last_token_hidden_state
 
5
 
6
  def test_get_or_load_model_loads_correctly(model_id):
7
  """Testet, ob das Laden eines echten Modells funktioniert."""
@@ -13,7 +15,7 @@ def test_get_or_load_model_loads_correctly(model_id):
13
 
14
  def test_run_silent_cogitation_seismic_output_shape_and_type(model_id):
15
  """Führt einen kurzen Lauf mit einem echten Modell durch und prüft die Datentypen."""
16
- num_steps = 5
17
  llm = get_or_load_model(model_id, seed=42)
18
  state_deltas = run_silent_cogitation_seismic(
19
  llm=llm, prompt_type="control_long_prose",
@@ -33,7 +35,51 @@ def test_get_last_token_hidden_state_robustness(model_id):
33
  def test_get_concept_vector_logic(model_id):
34
  """Testet die Vektor-Extraktion mit einem echten Modell."""
35
  llm = get_or_load_model(model_id, seed=42)
36
- # Verwende eine sehr kurze Baseline für einen schnellen Test
37
  vector = get_concept_vector(llm, "love", baseline_words=["thing", "place"])
38
  assert isinstance(vector, torch.Tensor)
39
  assert vector.shape == (llm.stable_config.hidden_dim,)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import torch
2
+ import numpy as np
3
  from cognitive_mapping_probe.llm_iface import get_or_load_model
4
  from cognitive_mapping_probe.resonance_seismograph import run_silent_cogitation_seismic
5
  from cognitive_mapping_probe.concepts import get_concept_vector, _get_last_token_hidden_state
6
+ from cognitive_mapping_probe.signal_analysis import analyze_cognitive_signal
7
 
8
  def test_get_or_load_model_loads_correctly(model_id):
9
  """Testet, ob das Laden eines echten Modells funktioniert."""
 
15
 
16
  def test_run_silent_cogitation_seismic_output_shape_and_type(model_id):
17
  """Führt einen kurzen Lauf mit einem echten Modell durch und prüft die Datentypen."""
18
+ num_steps = 10
19
  llm = get_or_load_model(model_id, seed=42)
20
  state_deltas = run_silent_cogitation_seismic(
21
  llm=llm, prompt_type="control_long_prose",
 
35
  def test_get_concept_vector_logic(model_id):
36
  """Testet die Vektor-Extraktion mit einem echten Modell."""
37
  llm = get_or_load_model(model_id, seed=42)
 
38
  vector = get_concept_vector(llm, "love", baseline_words=["thing", "place"])
39
  assert isinstance(vector, torch.Tensor)
40
  assert vector.shape == (llm.stable_config.hidden_dim,)
41
+
42
+ def test_analyze_cognitive_signal_no_peaks():
43
+ """
44
+ Testet den Edge Case, dass ein Signal keine signifikanten Frequenz-Peaks hat.
45
+ """
46
+ flat_signal = np.linspace(0, 1, 100)
47
+ results = analyze_cognitive_signal(flat_signal)
48
+ assert results is not None
49
+ assert results["dominant_periods_steps"] is None
50
+ assert "spectral_entropy" in results
51
+
52
+ def test_analyze_cognitive_signal_with_peaks():
53
+ """
54
+ Testet den Normalfall, dass ein Signal Peaks hat, mit realistischerem Rauschen.
55
+ """
56
+ np.random.seed(42)
57
+ steps = np.arange(200)
58
+ # Signal mit einer starken Periode von 10 und einer schwächeren von 25
59
+ signal_with_peak = (1.0 * np.sin(2 * np.pi * (1/10.0) * steps) +
60
+ 0.5 * np.sin(2 * np.pi * (1/25.0) * steps) +
61
+ np.random.randn(200) * 0.5) # Realistischeres Rauschen
62
+ results = analyze_cognitive_signal(signal_with_peak)
63
+
64
+ assert results["dominant_periods_steps"] is not None
65
+ assert 10.0 in results["dominant_periods_steps"]
66
+ assert 25.0 in results["dominant_periods_steps"]
67
+
68
+ def test_analyze_cognitive_signal_with_multiple_peaks():
69
+ """
70
+ Erweiterter Test, der die korrekte Identifizierung und Sortierung
71
+ von drei Peaks verifiziert, mit realistischerem Rauschen.
72
+ """
73
+ np.random.seed(42)
74
+ steps = np.arange(300)
75
+ # Definiere drei Peaks mit unterschiedlicher Stärke (Amplitude)
76
+ signal = (2.0 * np.sin(2 * np.pi * (1/10.0) * steps) +
77
+ 1.5 * np.sin(2 * np.pi * (1/4.0) * steps) +
78
+ 1.0 * np.sin(2 * np.pi * (1/30.0) * steps) +
79
+ np.random.randn(300) * 0.5) # Realistischeres Rauschen
80
+
81
+ results = analyze_cognitive_signal(signal, num_peaks=3)
82
+
83
+ assert results["dominant_periods_steps"] is not None
84
+ expected_periods = [10.0, 4.0, 30.0]
85
+ assert results["dominant_periods_steps"] == expected_periods