feat!: switches over to pdme new stuff, uses models and scraps discretisations entirely

This commit is contained in:
2022-04-30 17:31:36 -05:00
parent 31070b5342
commit 6e29f7a702
5 changed files with 46 additions and 54 deletions

View File

@@ -1,9 +1,7 @@
import logging
from deepdog.meta import __version__
from deepdog.bayes_run import BayesRun
from deepdog.alt_bayes_run import AltBayesRun
from deepdog.alt_bayes_run_simulpairs import AltBayesRunSimulPairs
from deepdog.diagnostic import Diagnostic
from deepdog.bayes_run_simulpairs import BayesRunSimulPairs
def get_version():
@@ -13,9 +11,7 @@ def get_version():
__all__ = [
"get_version",
"BayesRun",
"AltBayesRun",
"AltBayesRunSimulPairs",
"Diagnostic",
"BayesRunSimulPairs",
]

View File

@@ -23,8 +23,8 @@ _logger = logging.getLogger(__name__)
def get_a_result(input) -> int:
discretisation, dot_inputs, lows, highs, monte_carlo_count, max_frequency = input
sample_dipoles = discretisation.get_model().get_n_single_dipoles(
model, dot_inputs, lows, highs, monte_carlo_count, max_frequency = input
sample_dipoles = model.get_model().get_n_single_dipoles(
monte_carlo_count, max_frequency
)
vals = pdme.util.fast_v_calc.fast_vs_for_dipoles(dot_inputs, sample_dipoles)
@@ -33,7 +33,7 @@ def get_a_result(input) -> int:
def get_a_result_using_pairs(input) -> int:
(
discretisation,
model,
dot_inputs,
pair_inputs,
local_lows,
@@ -43,9 +43,7 @@ def get_a_result_using_pairs(input) -> int:
monte_carlo_count,
max_frequency,
) = input
sample_dipoles = discretisation.get_model().get_n_single_dipoles(
monte_carlo_count, max_frequency
)
sample_dipoles = model.get_n_single_dipoles(monte_carlo_count, max_frequency)
local_vals = pdme.util.fast_v_calc.fast_vs_for_dipoles(dot_inputs, sample_dipoles)
local_matches = pdme.util.fast_v_calc.between(local_vals, local_lows, local_highs)
nonlocal_vals = pdme.util.fast_nonlocal_spectrum.fast_s_nonlocal(
@@ -58,7 +56,7 @@ def get_a_result_using_pairs(input) -> int:
return numpy.count_nonzero(combined_matches)
class AltBayesRun:
class BayesRun:
"""
A single Bayes run for a given set of dots.
@@ -67,11 +65,11 @@ class AltBayesRun:
dot_inputs : Sequence[DotInput]
The dot inputs for this bayes run.
discretisations_with_names : Sequence[Tuple(str, pdme.model.Model)]
models_with_names : Sequence[Tuple(str, pdme.model.DipoleModel)]
The models to evaluate.
actual_model_discretisation : pdme.model.Discretisation
The discretisation for the model which is actually correct.
actual_model : pdme.model.DipoleModel
The model which is actually correct.
filename_slug : str
The filename slug to include.
@@ -84,8 +82,8 @@ class AltBayesRun:
self,
dot_positions: Sequence[numpy.typing.ArrayLike],
frequency_range: Sequence[float],
discretisations_with_names: Sequence[Tuple[str, pdme.model.Discretisation]],
actual_model: pdme.model.Model,
models_with_names: Sequence[Tuple[str, pdme.model.DipoleModel]],
actual_model: pdme.model.DipoleModel,
filename_slug: str,
run_count: int = 100,
low_error: float = 0.9,
@@ -117,10 +115,10 @@ class AltBayesRun:
pdme.measurement.input_types.dot_pair_inputs_to_array(self.dot_pair_inputs)
)
self.discretisations = [disc for (_, disc) in discretisations_with_names]
self.model_names = [name for (name, _) in discretisations_with_names]
self.models = [model for (_, model) in models_with_names]
self.model_names = [name for (name, _) in models_with_names]
self.actual_model = actual_model
self.model_count = len(self.discretisations)
self.model_count = len(self.models)
self.monte_carlo_count = monte_carlo_count
self.monte_carlo_cycles = monte_carlo_cycles
self.target_success = target_success
@@ -203,9 +201,9 @@ class AltBayesRun:
_logger.info(f"Going to work on dipole at {actual_dipoles.dipoles}")
results = []
_logger.debug("Going to iterate over discretisations now")
for disc_count, discretisation in enumerate(self.discretisations):
_logger.debug(f"Doing discretisation #{disc_count}")
_logger.debug("Going to iterate over models now")
for model_count, model in enumerate(self.models):
_logger.debug(f"Doing model #{model_count}")
with multiprocessing.Pool(multiprocessing.cpu_count() - 1 or 1) as pool:
cycle_count = 0
cycle_success = 0
@@ -223,7 +221,7 @@ class AltBayesRun:
get_a_result_using_pairs,
[
(
discretisation,
model,
self.dot_inputs_array,
self.dot_pair_inputs_array,
lows,
@@ -244,7 +242,7 @@ class AltBayesRun:
get_a_result,
[
(
discretisation,
model,
self.dot_inputs_array,
lows,
highs,

View File

@@ -25,7 +25,7 @@ _logger = logging.getLogger(__name__)
def get_a_simul_result_using_pairs(input) -> numpy.ndarray:
(
discretisation,
model,
dot_inputs,
pair_inputs,
local_lows,
@@ -42,16 +42,12 @@ def get_a_simul_result_using_pairs(input) -> numpy.ndarray:
local_total = 0
combined_total = 0
sample_dipoles = discretisation.get_model().get_n_single_dipoles(
sample_dipoles = model.get_monte_carlo_dipole_inputs(
monte_carlo_count, max_frequency, rng_to_use=rng
)
local_vals = pdme.util.fast_v_calc.fast_vs_for_dipoles(
dot_inputs, sample_dipoles
)
local_matches = pdme.util.fast_v_calc.between(
local_vals, local_lows, local_highs
)
nonlocal_vals = pdme.util.fast_nonlocal_spectrum.fast_s_nonlocal(
local_vals = pdme.util.fast_v_calc.fast_vs_for_dipoleses(dot_inputs, sample_dipoles)
local_matches = pdme.util.fast_v_calc.between(local_vals, local_lows, local_highs)
nonlocal_vals = pdme.util.fast_nonlocal_spectrum.fast_s_nonlocal_dipoleses(
pair_inputs, sample_dipoles
)
nonlocal_matches = pdme.util.fast_v_calc.between(
@@ -64,7 +60,7 @@ def get_a_simul_result_using_pairs(input) -> numpy.ndarray:
return numpy.array([local_total, combined_total])
class AltBayesRunSimulPairs:
class BayesRunSimulPairs:
"""
A dual pairs-nonpairs Bayes run for a given set of dots.
@@ -73,11 +69,11 @@ class AltBayesRunSimulPairs:
dot_inputs : Sequence[DotInput]
The dot inputs for this bayes run.
discretisations_with_names : Sequence[Tuple(str, pdme.model.Model)]
models_with_names : Sequence[Tuple(str, pdme.model.DipoleModel)]
The models to evaluate.
actual_model_discretisation : pdme.model.Discretisation
The discretisation for the model which is actually correct.
actual_model : pdme.model.DipoleModel
The modoel for the model which is actually correct.
filename_slug : str
The filename slug to include.
@@ -90,8 +86,8 @@ class AltBayesRunSimulPairs:
self,
dot_positions: Sequence[numpy.typing.ArrayLike],
frequency_range: Sequence[float],
discretisations_with_names: Sequence[Tuple[str, pdme.model.Discretisation]],
actual_model: pdme.model.Model,
models_with_names: Sequence[Tuple[str, pdme.model.DipoleModel]],
actual_model: pdme.model.DipoleModel,
filename_slug: str,
run_count: int = 100,
low_error: float = 0.9,
@@ -120,10 +116,10 @@ class AltBayesRunSimulPairs:
pdme.measurement.input_types.dot_pair_inputs_to_array(self.dot_pair_inputs)
)
self.discretisations = [disc for (_, disc) in discretisations_with_names]
self.model_names = [name for (name, _) in discretisations_with_names]
self.models = [mod for (_, mod) in models_with_names]
self.model_names = [name for (name, _) in models_with_names]
self.actual_model = actual_model
self.model_count = len(self.discretisations)
self.model_count = len(self.models)
self.monte_carlo_count = monte_carlo_count
self.monte_carlo_cycles = monte_carlo_cycles
self.target_success = target_success
@@ -208,9 +204,9 @@ class AltBayesRunSimulPairs:
results_pairs = []
results_no_pairs = []
_logger.debug("Going to iterate over discretisations now")
for disc_count, discretisation in enumerate(self.discretisations):
_logger.debug(f"Doing discretisation #{disc_count}")
_logger.debug("Going to iterate over models now")
for model_count, model in enumerate(self.models):
_logger.debug(f"Doing model #{model_count}")
core_count = multiprocessing.cpu_count() - 1 or 1
with multiprocessing.Pool(core_count) as pool:
@@ -223,7 +219,9 @@ class AltBayesRunSimulPairs:
<= self.target_success
):
_logger.debug(f"Starting cycle {cycles}")
_logger.debug(f"(pair, no_pair) successes are {(cycle_success_pairs, cycle_success_no_pairs)}")
_logger.debug(
f"(pair, no_pair) successes are {(cycle_success_pairs, cycle_success_no_pairs)}"
)
cycles += 1
current_success_pairs = 0
current_success_no_pairs = 0
@@ -241,7 +239,7 @@ class AltBayesRunSimulPairs:
get_a_simul_result_using_pairs,
[
(
discretisation,
model,
self.dot_inputs_array,
self.dot_pair_inputs_array,
lows,