Lucidia Core - AI reasoning engines for specialized domains: - Physicist (867 lines) - energy modeling, force calculations - Mathematician (760 lines) - symbolic computation, proofs - Geologist (654 lines) - terrain modeling, stratigraphy - Engineer (599 lines) - structural analysis, optimization - Painter (583 lines) - visual generation, graphics - Chemist (569 lines) - molecular analysis, reactions - Analyst (505 lines) - pattern recognition, insights - Plus: architect, researcher, mediator, speaker, poet, navigator Features: - FastAPI wrapper with REST endpoints for each agent - CLI with `lucidia list`, `lucidia run`, `lucidia api` - Codex YAML configurations for agent personalities - Quantum engine extensions 12,512 lines of Python across 91 files. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
59 lines
1.7 KiB
Python
59 lines
1.7 KiB
Python
"""Helper builders for Qiskit EstimatorQNN and SamplerQNN."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Optional
|
|
|
|
from qiskit import QuantumCircuit
|
|
from qiskit.circuit import ParameterVector
|
|
from qiskit_machine_learning.neural_networks import EstimatorQNN, SamplerQNN
|
|
|
|
from .backends import AerCPUBackend, QuantumBackend
|
|
|
|
|
|
def build_estimator_qnn(
|
|
feature_map: QuantumCircuit,
|
|
ansatz: QuantumCircuit,
|
|
observable: QuantumCircuit | None,
|
|
input_size: int,
|
|
weight_size: int,
|
|
backend: Optional[QuantumBackend] = None,
|
|
) -> EstimatorQNN:
|
|
"""Construct an :class:`EstimatorQNN` with gradients enabled."""
|
|
|
|
backend = backend or AerCPUBackend()
|
|
input_params = ParameterVector("x", length=input_size)
|
|
weight_params = ParameterVector("w", length=weight_size)
|
|
return EstimatorQNN(
|
|
feature_map=feature_map,
|
|
ansatz=ansatz,
|
|
observable=observable,
|
|
input_params=input_params,
|
|
weight_params=weight_params,
|
|
backend=backend.simulator,
|
|
input_gradients=True,
|
|
)
|
|
|
|
|
|
def build_sampler_qnn(
|
|
feature_map: QuantumCircuit,
|
|
ansatz: QuantumCircuit,
|
|
input_size: int,
|
|
weight_size: int,
|
|
num_classes: int,
|
|
backend: Optional[QuantumBackend] = None,
|
|
) -> SamplerQNN:
|
|
"""Construct a probabilistic :class:`SamplerQNN`."""
|
|
|
|
backend = backend or AerCPUBackend()
|
|
input_params = ParameterVector("x", length=input_size)
|
|
weight_params = ParameterVector("w", length=weight_size)
|
|
return SamplerQNN(
|
|
feature_map=feature_map,
|
|
ansatz=ansatz,
|
|
input_params=input_params,
|
|
weight_params=weight_params,
|
|
output_shape=num_classes,
|
|
backend=backend.simulator,
|
|
)
|