Skip to content

Latest commit

 

History

History
59 lines (40 loc) · 1.78 KB

File metadata and controls

59 lines (40 loc) · 1.78 KB

MetropolisEngine

status: in development for own use on the test case cylinder; hosted at test.pypi

Markov chain Monte Carlo simulation on a physics system. Mixed complex and real parameter space and adaptive. Works together with some external function that takes a list of (real and complex) parameters and returns an energy.

INSTALL:

pip install --index-url https://test.pypi.org/simple metropolisengine

IMPORT:

import metropolisengine as me

USE:

see demo/, cylinder/run.py;

MINIMAL EXAMPLE:

simulation of one real variable x subject to the potential E = x^2. Set up the "physics system", here just

def energy_function(x):
  return x**2

initialize MetropolisEngine object. You must give at least an energy function ( [real params] [complex params] -> float ) and at least a list of one value as either initial_real_params or initial_complex_params. Also set a non-zero temperature so that something interesting will happen in our simulation.

import metropolisengine as me
my_engine = me.MetropolisEngine(lambda real_params, complex_params: energy_function(*real_params), initial_real_params=[0.0], temp=.01)

run the simulation by looping over step_all(), and record data at every step with measure()

n_steps = 1000
for i in range(n_steps):
  my_engine.step_all()
  my_engine.measure()

look at measured quatities such as mean, (co-)variances, other default measured quantities.

print(my_engine.real_mean)
print(my_engine.covariance_matrix_real)
print(list(zip(my_engine.observables_names, my_engine.observables_mean)))

finally prompt the finalization of time series data into a table and look at it

my_engine.save_time_series()
print(my_engine.df)