[1]:
import sigopt
import os
import numpy as np
import logging
import deeptime.markov.msm as dm
import tqdm.auto as tqdm
import mr_toolkit.trajectory_analysis.traj_analysis as ta
from mr_toolkit.reweighting.analysis import get_set_kls
import synd.core
from mr_toolkit.reweighting import analysis as rwa
import matplotlib.pyplot as plt
from scipy.stats import entropy
[17:26:03] INFO     Note: NumExpr detected 16 cores but "NUMEXPR_MAX_THREADS" not set, so enforcing    utils.py:148
                    safe limit of 8.                                                                               
           INFO     NumExpr defaulting to 8 threads.                                                   utils.py:160
           WARNING  msm_we not found, fpt_distribution calculations will be unavailable              analysis.py:18

Hyperparameter optimization with SigOpt

To build a reweighted MSM using a given set of trajectories, there are a number of sensitive hyperparameters. These include: - MSM lagtime - Fragment length - Last-fraction of trajectories to use

Besides lagtime, it’s not necessarily clear how to choose these.

This notebook demonstrates a heuristic optimization approach that works by splitting up the input dataset into subsets, and identifying the hyperparameters that provide maximal similarity across subsets. This assumes that self-consistency across subsets means we’re getting reasonably consistent estimates.

This criteria is just a loose guide – by no means is it rigorously considered an optimal criterion!

[2]:
n_trajectories = 400
trajectory_length = 20

n_subsets = 4

# From the underlying model
n_states = 100

First, verify an API key is stored in the environment. To get an API key for sigopt, register for an account and then visit the token page.

[3]:
if os.environ.get('SIGOPT_API_TOKEN', None) is None:
    raise Exception('Set $SIGOPT_API_TOKEN in your environment to use this notebook.')

Then create the sigopt project, or use the existing one.

NB: One nice detail about sigopt is that successive optimizations in the same project will learn from previous runs, even if they’re in a new experiment.

[4]:
if 'SIGOPT_PROJECT' not in os.environ.keys():

    project_name = 'sample_optimization'

    print(f'$SIGOPT_PROJECT not set in environment -- creating a new project named {project_name}.')

    try:
        sigopt.create_project(project_name)
    except sigopt.factory.ConflictingProjectException as e:
        print("Sigopt project already exists, using that.")

    os.environ['SIGOPT_PROJECT'] = project_name
$SIGOPT_PROJECT not set in environment -- creating a new project named sample_optimization.
Sigopt project already exists, using that.

Generate sample data

[5]:
state_definitions = np.load('sample_data/coarser-state_definitions.npz')

source_states = state_definitions['source']
target_states = state_definitions['target']
[6]:
synd_model = synd.core.load_model('sample_data/coarser-model.synd')

# Set the SynD model seed so we get the same random trajectories
synd_model.rng = np.random.default_rng(seed=50)
[7]:
ref_equil = np.load('sample_data/coarser-reference_distributions.npz')['equil']
[8]:
initial_points = synd_model.rng.choice(np.arange(n_states), n_trajectories)

trajectories = synd_model.generate_trajectory(
    initial_states = initial_points,
    n_steps = trajectory_length
)

Split data into subsets

First, let’s split our data up into equal-size subsets.

[9]:
datasets = np.array([trajectories[i::n_subsets] for i in range(n_subsets)])

Test parameters on subsets to identify optimal

Now, we’ll run a Sigopt experiment to identify the “optimal” set of parameters.

[10]:
metaparameters = dict(
    trajectory_length=trajectory_length,
    n_trajectories_per_set=n_trajectories // n_subsets,
    n_trajectory_sets=n_subsets,

    # These below probably won't change much
    min_weight=1e-12,  # This just helps with numerical stability during the reweighting iteration
    n_reweight_iters=100,
)

Define parameter space

[11]:
experiment = sigopt.create_experiment(
        name=f"Sample optimization",

        budget=50,

        parameters=[
            dict(name='N',
                 type='int',
                 bounds={'min': 2, 'max':trajectory_length-1 }),

            dict(name='last_frac',
                 type='double',
                 grid=[0.25, 0.5, 0.75, 1.0]),

            dict(name='lag',
                 type='int',
                 bounds={'min': 1, 'max': trajectory_length-1 }),
        ],

        metrics=[
            {
                "name": "lag_vs_N",
                "strategy": "constraint",
                "objective": "minimize",
                "threshold": 1.0,
            },
            {
                "name": "avg_set_iterative_kl",
                "strategy": "optimize",
                "objective": "minimize",
            },
        ],

        metadata=dict(
            trajectory_length=trajectory_length,
            n_trajectories_per_set=n_trajectories // n_subsets,
            n_trajectory_sets=n_subsets,

            # These below probably won't change much
            min_weight=1e-12,  # This just helps with numerical stability during the reweighting iteration
            n_reweight_iters=100,
        ),
    )
[17:26:04] INFO     AI Experiment created, view it on the SigOpt dashboard at                         factory.py:54
                    https://app.sigopt.com/aiexperiment/570847                                                     

Perform optimization

We’ll do a number of runs now (determined by the budget above) to explore the hyperparameter space.

We’ll let Sigopt’s ML engine guide the parameter choices, and only concern ourselves with the final result.

[12]:
for run in tqdm.tqdm(experiment.loop(), desc='SigOpt runs', total=int(experiment.progress.remaining_budget)):
    with run:

        # Lag time must be shorter than N, so this must be below 1
        lag_vs_N = run.params["lag"] / run.params["N"]
        run.log_metric("lag_vs_N", lag_vs_N)
        if lag_vs_N >= 1.0:
            print("Invalid lag / N combination, skipping to next run")
            continue

        # Estimate reweighted equilibrium distribution for each set
        reweighted_equil_estimates = np.full((n_subsets, n_states), fill_value=np.nan)

        for i, trajectory_set in enumerate(datasets):

            (states, stationaries, last_iter, reweighted_matrices,) = rwa.compute_reweighted_stationary(
                trajectory_set,
                N=run.params["N"],
                lag=run.params["lag"],
                last_frac=run.params['last_frac'],
                n_clusters=n_states,
                n_reweighting_iters=metaparameters['n_reweight_iters'],
                min_weight=metaparameters['min_weight'],
            )

            print(last_iter)

            reweighted_equil_estimates[i] = stationaries[last_iter]

        mean_kl = get_set_kls(reweighted_equil_estimates)

        if np.isnan(mean_kl):
            mean_kl = 10

        # Log set-set KL divergence
        run.log_metric('avg_set_iterative_kl', mean_kl)
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604117                                                              
Invalid lag / N combination, skipping to next run
[17:26:05] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604117                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604118                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604118                                                              
[17:26:06] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604119                                                              
reweighted iteration is converged at iter 26
26
reweighted iteration is converged at iter 22
22
reweighted iteration is converged at iter 24
24
reweighted iteration is converged at iter 33
33
[17:26:07] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604119                                                              
[17:26:08] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604120                                                              
/home/jd/anaconda3/envs/mr_toolkit/lib/python3.11/site-packages/mr_toolkit/trajectory_analysis/traj_analysis.py:510: RuntimeWarning: divide by zero encountered in log
  np.log(stationary_distributions[-1]) - np.log(stationary_distributions[-2])
/home/jd/anaconda3/envs/mr_toolkit/lib/python3.11/site-packages/mr_toolkit/trajectory_analysis/traj_analysis.py:510: RuntimeWarning: invalid value encountered in subtract
  np.log(stationary_distributions[-1]) - np.log(stationary_distributions[-2])
reweighted iteration is converged at iter 33
33
reweighted iteration is converged at iter 32
32
reweighted iteration is converged at iter 32
32
reweighted iteration is converged at iter 29
29
[17:26:09] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604120                                                              
[17:26:10] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604121                                                              
reweighted iteration is converged at iter 40
40
reweighted iteration is converged at iter 34
34
reweighted iteration is converged at iter 26
26
reweighted iteration is converged at iter 29
29
[17:26:11] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604121                                                              
[17:26:12] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604122                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604122                                                              
[17:26:13] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604123                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604123                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604124                                                              
reweighted iteration is converged at iter 65
65
reweighted iteration is converged at iter 39
39
reweighted iteration is converged at iter 23
23
reweighted iteration is converged at iter 33
33
[17:26:15] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604124                                                              
[17:26:16] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604125                                                              
reweighted iteration is converged at iter 23
23
reweighted iteration is converged at iter 24
24
reweighted iteration is converged at iter 23
23
reweighted iteration is converged at iter 26
26
[17:26:17] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604125                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604126                                                              
[17:26:18] WARNING  Stationary solution 1 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 2 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 3 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 4 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 5 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 6 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 7 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 8 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 9 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 10 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 11 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 12 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 13 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 14 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 15 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 16 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 17 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 18 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 19 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 20 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 21 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 22 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 23 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 24 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 25 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 26 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 27 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 28 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 29 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 30 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 31 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 32 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 33 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 34 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 35 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 36 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 37 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 38 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 39 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 40 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 41 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 42 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 43 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 44 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 45 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 46 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 47 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 48 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 49 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 50 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 51 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 52 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 53 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 54 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 55 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 56 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 57 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 58 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 59 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 60 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 61 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 62 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 63 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 64 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 65 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 66 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 67 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 68 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 69 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 70 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 71 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 72 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 73 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 74 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 75 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 76 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 77 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 78 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 79 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 80 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 81 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 82 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 83 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 84 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 85 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 86 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 87 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 88 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 89 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 90 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 91 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 92 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 93 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 94 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 95 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 96 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 97 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 98 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 99 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           CRITICAL No good stationary solution exists! Stopping iteration at iter 0           traj_analysis.py:470
0
           WARNING  Stationary solution 1 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 2 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 3 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 4 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 5 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 6 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 7 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 8 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 9 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 10 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 11 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 12 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 13 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 14 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 15 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 16 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 17 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 18 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 19 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 20 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 21 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 22 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 23 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 24 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 25 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 26 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 27 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 28 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 29 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 30 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 31 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 32 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 33 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 34 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 35 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 36 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 37 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 38 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 39 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 40 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 41 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 42 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 43 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 44 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 45 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 46 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 47 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 48 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 49 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 50 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 51 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 52 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 53 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 54 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 55 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 56 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 57 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 58 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 59 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 60 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 61 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 62 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 63 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 64 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 65 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 66 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 67 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 68 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 69 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 70 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 71 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 72 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 73 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 74 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 75 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 76 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 77 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 78 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 79 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 80 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 81 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 82 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 83 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 84 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 85 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 86 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 87 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 88 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 89 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 90 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 91 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 92 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 93 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 94 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 95 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 96 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 97 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 98 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 99 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           CRITICAL No good stationary solution exists! Stopping iteration at iter 0           traj_analysis.py:470
0
           WARNING  Stationary solution 1 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 2 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 3 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 4 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 5 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 6 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 7 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 8 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 9 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 10 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 11 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 12 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 13 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 14 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 15 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 16 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 17 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 18 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 19 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 20 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 21 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 22 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 23 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 24 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 25 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 26 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 27 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 28 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 29 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 30 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 31 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 32 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 33 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 34 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 35 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 36 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 37 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 38 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 39 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 40 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 41 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 42 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 43 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 44 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 45 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 46 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 47 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 48 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 49 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 50 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 51 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 52 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 53 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 54 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 55 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 56 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 57 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 58 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 59 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 60 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 61 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 62 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 63 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 64 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 65 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 66 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 67 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 68 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 69 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 70 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 71 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 72 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 73 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 74 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 75 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 76 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 77 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 78 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 79 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 80 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 81 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 82 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 83 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 84 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 85 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 86 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 87 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 88 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 89 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 90 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 91 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 92 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 93 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 94 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 95 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 96 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 97 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 98 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 99 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           CRITICAL No good stationary solution exists! Stopping iteration at iter 0           traj_analysis.py:470
0
           WARNING  Stationary solution 1 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 2 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 3 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 4 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 5 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 6 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 7 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 8 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 9 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 10 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 11 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 12 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 13 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 14 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 15 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 16 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 17 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 18 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 19 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 20 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 21 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 22 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 23 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 24 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 25 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 26 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 27 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 28 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 29 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 30 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 31 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 32 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 33 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 34 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 35 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 36 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 37 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 38 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 39 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 40 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 41 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 42 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 43 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 44 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 45 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 46 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 47 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 48 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 49 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 50 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 51 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 52 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 53 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 54 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 55 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 56 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 57 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 58 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 59 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 60 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 61 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 62 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 63 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 64 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 65 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 66 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 67 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 68 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 69 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 70 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 71 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 72 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 73 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 74 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 75 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 76 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 77 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 78 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 79 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 80 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 81 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 82 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 83 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 84 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 85 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 86 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 87 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 88 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 89 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 90 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 91 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 92 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 93 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 94 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 95 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 96 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 97 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 98 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 99 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           CRITICAL No good stationary solution exists! Stopping iteration at iter 0           traj_analysis.py:470
0
[17:26:19] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604126                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604127                                                              
reweighted iteration is converged at iter 25
25
reweighted iteration is converged at iter 30
30
reweighted iteration is converged at iter 24
24
reweighted iteration is converged at iter 24
24
[17:26:21] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604127                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604128                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604128                                                              
[17:26:22] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604129                                                              
reweighted iteration is converged at iter 79
79
99
[17:26:23] WARNING  Stationary solution 1 is all in one bin in iter 0 -- picking next-biggest  traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 2 is not positive semidefinite, trying the next one    traj_analysis.py:478
           WARNING  Stationary solution 3 is not positive semidefinite, trying the next one    traj_analysis.py:478
           WARNING  Stationary solution 4 is not positive semidefinite, trying the next one    traj_analysis.py:478
           WARNING  Stationary solution 5 is not positive semidefinite, trying the next one    traj_analysis.py:478
           WARNING  Stationary solution 6 is not positive semidefinite, trying the next one    traj_analysis.py:478
           WARNING  Stationary solution 7 is not positive semidefinite, trying the next one    traj_analysis.py:478
           WARNING  Stationary solution 8 is not positive semidefinite, trying the next one    traj_analysis.py:478
           WARNING  Stationary solution 9 is not positive semidefinite, trying the next one    traj_analysis.py:478
           WARNING  Stationary solution 10 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 11 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 12 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 13 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 14 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 15 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 16 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 17 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 18 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 19 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 20 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 21 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 22 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 23 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 24 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 25 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 26 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 27 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 28 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 29 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 30 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 31 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 32 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 33 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 34 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 35 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 36 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 37 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 38 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 39 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 40 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 41 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 42 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 43 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 44 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 45 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 46 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 47 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 48 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 49 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 50 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 51 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 52 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 53 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 54 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 55 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 56 is all in one bin in iter 0 -- picking next-biggest traj_analysis.py:476
                    eigenvalue                                                                                     
           WARNING  Stationary solution 57 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 58 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 59 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 60 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 61 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 62 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 63 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 64 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 65 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 66 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 67 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 68 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 69 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 70 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 71 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 72 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 73 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 74 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 75 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 76 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 77 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 78 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 79 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 80 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 81 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 82 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 83 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 84 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 85 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 86 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 87 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 88 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 89 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 90 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 91 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 92 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 93 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 94 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 95 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 96 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 97 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 98 is not positive semidefinite, trying the next one   traj_analysis.py:478
           WARNING  Stationary solution 99 is not positive semidefinite, trying the next one   traj_analysis.py:478
           CRITICAL No good stationary solution exists! Stopping iteration at iter 0           traj_analysis.py:470
0
reweighted iteration is converged at iter 45
45
[17:26:24] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604129                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604130                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604130                                                              
[17:26:25] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604131                                                              
reweighted iteration is converged at iter 54
54
99
99
reweighted iteration is converged at iter 38
38
[17:26:27] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604131                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604132                                                              
reweighted iteration is converged at iter 33
33
reweighted iteration is converged at iter 21
21
reweighted iteration is converged at iter 37
37
reweighted iteration is converged at iter 30
30
[17:26:29] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604132                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604133                                                              
reweighted iteration is converged at iter 25
25
reweighted iteration is converged at iter 23
23
reweighted iteration is converged at iter 22
22
reweighted iteration is converged at iter 22
22
[17:26:31] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604133                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604134                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604134                                                              
[17:26:32] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604135                                                              
reweighted iteration is converged at iter 31
31
reweighted iteration is converged at iter 30
30
reweighted iteration is converged at iter 37
37
reweighted iteration is converged at iter 35
35
[17:26:34] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604135                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604136                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604136                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604137                                                              
Invalid lag / N combination, skipping to next run
[17:26:35] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604137                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604138                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604138                                                              
[17:26:36] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604139                                                              
reweighted iteration is converged at iter 59
59
reweighted iteration is converged at iter 26
26
reweighted iteration is converged at iter 22
22
reweighted iteration is converged at iter 29
29
[17:26:38] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604139                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604140                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604140                                                              
[17:26:39] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604141                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604141                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604142                                                              
reweighted iteration is converged at iter 28
28
reweighted iteration is converged at iter 37
37
reweighted iteration is converged at iter 40
40
reweighted iteration is converged at iter 27
27
[17:26:41] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604142                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604143                                                              
Invalid lag / N combination, skipping to next run
[17:26:42] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604143                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604144                                                              
99
reweighted iteration is converged at iter 30
30
reweighted iteration is converged at iter 23
23
reweighted iteration is converged at iter 28
28
[17:26:45] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604144                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604145                                                              
reweighted iteration is converged at iter 29
29
reweighted iteration is converged at iter 28
28
reweighted iteration is converged at iter 29
29
reweighted iteration is converged at iter 32
32
[17:26:47] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604145                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604146                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604146                                                              
[17:26:48] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604147                                                              
reweighted iteration is converged at iter 27
27
reweighted iteration is converged at iter 31
31
reweighted iteration is converged at iter 25
25
reweighted iteration is converged at iter 24
24
[17:26:49] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604147                                                              
[17:26:50] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604149                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604149                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604150                                                              
Invalid lag / N combination, skipping to next run
[17:26:51] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604150                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604151                                                              
99
reweighted iteration is converged at iter 30
30
reweighted iteration is converged at iter 23
23
reweighted iteration is converged at iter 28
28
[17:26:53] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604151                                                              
[17:26:54] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604152                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604152                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604153                                                              
Invalid lag / N combination, skipping to next run
[17:26:55] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604153                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604154                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604154                                                              
[17:26:56] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604155                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604155                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604156                                                              
Invalid lag / N combination, skipping to next run
[17:26:57] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604156                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604157                                                              
reweighted iteration is converged at iter 29
29
reweighted iteration is converged at iter 28
28
reweighted iteration is converged at iter 26
26
reweighted iteration is converged at iter 31
31
[17:26:58] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604157                                                              
[17:26:59] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604158                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604158                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604159                                                              
99
reweighted iteration is converged at iter 38
38
reweighted iteration is converged at iter 24
24
reweighted iteration is converged at iter 36
36
[17:27:02] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604159                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604160                                                              
reweighted iteration is converged at iter 30
30
reweighted iteration is converged at iter 35
35
reweighted iteration is converged at iter 31
31
reweighted iteration is converged at iter 32
32
[17:27:04] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604160                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604161                                                              
Invalid lag / N combination, skipping to next run
[17:27:05] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604161                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604162                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604162                                                              
[17:27:06] INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604163                                                              
reweighted iteration is converged at iter 25
25
reweighted iteration is converged at iter 25
25
reweighted iteration is converged at iter 25
25
reweighted iteration is converged at iter 24
24
[17:27:07] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604163                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604164                                                              
Invalid lag / N combination, skipping to next run
[17:27:08] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604164                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604165                                                              
Invalid lag / N combination, skipping to next run
           INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604165                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604166                                                              
Invalid lag / N combination, skipping to next run
[17:27:09] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604166                                                              
           INFO     Run started, view it on the SigOpt dashboard at                               run_factory.py:13
                    https://app.sigopt.com/run/604167                                                              
reweighted iteration is converged at iter 45
45
reweighted iteration is converged at iter 26
26
reweighted iteration is converged at iter 31
31
reweighted iteration is converged at iter 37
37
[17:27:11] INFO     Run finished, view it on the SigOpt dashboard at                             run_context.py:371
                    https://app.sigopt.com/run/604167                                                              

Analyze global model using optimal parameters

Now let’s take the “best” set of parameters, i.e. those that produced most similar estimates across the trajectory subsets, and analyze the full set of trajectories with those.

[13]:
best_run = next(experiment.get_best_runs())

best_N = best_run.assignments["N"]
best_lag = best_run.assignments["lag"]
best_last_frac = best_run.assignments["last_frac"]

print(f"Identified optimal fragment length as {best_N}, optimal lag as {best_lag}, and last trajectory fraction to use as {best_last_frac}.")
Identified optimal fragment length as 16, optimal lag as 1, and last trajectory fraction to use as 0.25.
[14]:
(states, stationaries, last_iter, reweighted_matrices,) = rwa.compute_reweighted_stationary(
    trajectories,
    N=best_N,
    lag=best_lag,
    last_frac=best_last_frac,
    n_clusters=n_states,
    n_reweighting_iters=metaparameters['n_reweight_iters'],
    min_weight=metaparameters['min_weight'],
)

reweighted_equil = stationaries[last_iter]
reweighted iteration is converged at iter 18

Compare to standard MSM

[15]:
msm = dm.MaximumLikelihoodMSM().fit_from_discrete_timeseries(trajectories, best_lag)

msm_equil = msm.fetch_model().stationary_distribution
[16]:
plt.plot(msm_equil, label='MSM')

plt.plot(reweighted_equil, label='Optimized reweighted')

plt.plot(ref_equil, color='k')

plt.legend()
[16]:
<matplotlib.legend.Legend at 0x7efc7e60b450>
../_images/_examples_hyperparam_optimization_29_1.png
[17]:
msm_entropy = entropy(msm_equil, ref_equil)
reweighted_entropy = entropy(reweighted_equil, ref_equil)
[18]:
print("Relative entropies to reference (lower is better)")
print(f"MSM estimate: \t{msm_entropy:.2e}")
print(f"Reweighted estimate: \t{reweighted_entropy:.2e}")
Relative entropies to reference (lower is better)
MSM estimate:   1.09e-02
Reweighted estimate:    9.92e-03
[ ]: