In [1]:
# import numpy as np

# # !/usr/bin/env python3
# # -*- coding: utf-8 -*-
# """
# Created on 20181219

# @author: zhangji

# Trajection of a ellipse, Jeffery equation. 
# """

# %pylab inline
# pylab.rcParams['figure.figsize'] = (25, 11)
# fontsize = 40

# import numpy as np
# import scipy as sp
# from scipy.optimize import leastsq, curve_fit
# from scipy import interpolate
# from scipy.interpolate import interp1d
# from scipy.io import loadmat, savemat
# # import scipy.misc

# import matplotlib
# from matplotlib import pyplot as plt
# from matplotlib import animation, rc
# import matplotlib.ticker as mtick
# from mpl_toolkits.axes_grid1.inset_locator import inset_axes, zoomed_inset_axes
# from mpl_toolkits.mplot3d import Axes3D, axes3d

# from sympy import symbols, simplify, series, exp
# from sympy.matrices import Matrix
# from sympy.solvers import solve

# from IPython.display import display, HTML
# from tqdm import tqdm_notebook as tqdm
# import pandas as pd
# import re
# from scanf import scanf
# import os
# import glob

# from codeStore import support_fun as spf
# from src.support_class import *
# from src import stokes_flow as sf

# rc('animation', html='html5')
# PWD = os.getcwd()
# font = {'size': 20}
# matplotlib.rc('font', **font)
# np.set_printoptions(linewidth=90, precision=5)

%load_ext autoreload
%autoreload 2

from tqdm.notebook import tqdm as tqdm_notebook
import os
import glob
import natsort 
import numpy as np
import scipy as sp
from scipy.optimize import leastsq, curve_fit
from scipy import interpolate, integrate
from scipy import spatial, signal
# from scipy.interpolate import interp1d
from scipy.io import loadmat, savemat
# import scipy.misc
import importlib
from IPython.display import display, HTML
import pandas as pd
import pickle
import re
from scanf import scanf

import matplotlib
# matplotlib.use('agg')
from matplotlib import pyplot as plt
import matplotlib.colors as colors
from matplotlib import animation, rc
import matplotlib.ticker as mtick
from mpl_toolkits.axes_grid1.inset_locator import inset_axes, zoomed_inset_axes
from mpl_toolkits.mplot3d import Axes3D, axes3d
from mpl_toolkits.axes_grid1.axes_divider import make_axes_locatable
from mpl_toolkits.mplot3d.art3d import Line3DCollection
from matplotlib import cm

from tqdm import tqdm
from time import time
from src.support_class import *
from src import jeffery_model as jm
from codeStore import support_fun as spf
from codeStore import support_fun_table as spf_tb

# %matplotlib notebook
%matplotlib inline
rc('animation', html='html5')
fontsize = 40
PWD = os.getcwd()

In [2]:
fig = plt.figure(figsize=(2, 2))
fig.patch.set_facecolor('white')
ax0 = fig.add_subplot(1, 1, 1)



In [3]:
job_dir = 'ecoC01B05_passive_psi-0a'
table_name = 'ecoC01B05_tao1_wm0'
t_headle = '(.*?).pickle'

In [9]:
t_dir = os.path.join(PWD, job_dir)

data = spf_tb.load_table_data_pickle_dir(t_dir, t_headle)
lst_eta = data.lst_eta
theta_max_fre = data.theta_max_fre
phi_max_fre = data.phi_max_fre
psi_max_fre = data.psi_max_fre
eta_max_fre = data.eta_max_fre
data_idx = data.data_idx.fillna(-1).astype(int)




In [5]:
# check if the 3D parameter space is been traversed or not 
do_check = False
if do_check:
    t_headle = '(.*?).pickle'
    t_path = os.listdir(os.path.join(PWD, job_dir))
    filename_list = [filename for filename in os.listdir(os.path.join(PWD, job_dir)) 
                     if re.match(t_headle, filename) is not None]
    ttheta = []
    tphi = []
    tpsi = []
    for i0, tname in enumerate(tqdm_notebook(filename_list[:])):
        tpath = os.path.join(PWD, job_dir, tname)
        with open(tpath, 'rb') as handle:
            tpick = pickle.load(handle)
        ttheta.append(tpick['Table_theta'])
        tphi.append(tpick['Table_phi'])
        tpsi.append(tpick['Table_psi'])

    ttheta, tphi, tpsi = np.hstack(ttheta), np.hstack(tphi), np.hstack(tpsi)
    from evtk.hl import pointsToVTK
    vtu_name = '/home/zhangji/check_th_ph_ps_%s' % job_dir
    pointsToVTK(vtu_name, 
                ttheta, tphi, tpsi, 
                data={'th_ph_ps': ttheta})
    print('save theta_phi_psi infomation to %s' % vtu_name)

In [6]:
# sort phase map of theta-phi using the name beging with pick frequience
importlib.reload(spf_tb)
do_sort = False

if do_sort:
    # clear dir
    dirpath = os.path.join(PWD, job_dir, 'th_ph_fft')
    if os.path.exists(dirpath) and os.path.isdir(dirpath):
        import shutil
        shutil.rmtree(dirpath)
        print('remove folder %s' % dirpath)
    os.makedirs(dirpath)
    print('make folder %s' % dirpath)

    for tname in tqdm_notebook(filename_list[:]):
        tpath = os.path.join(PWD, job_dir, tname)
        with open(tpath, 'rb') as handle:
            tpick = pickle.load(handle)
        Table_t = tpick['Table_t']
        Table_dt = tpick['Table_dt']
        Table_X = tpick['Table_X']
        Table_P = tpick['Table_P']
        Table_P2 = tpick['Table_P2']
        Table_theta = tpick['Table_theta']
        Table_phi = tpick['Table_phi']
        Table_psi = tpick['Table_psi']
        Table_eta = tpick['Table_eta']

        tmin = np.max((0, Table_t.max() - 1000))
        idx = Table_t > tmin    
        freq_pk = spf_tb.get_major_fre(Table_t[idx], Table_theta[idx])
        idx = Table_t > (Table_t.max() - 1 / freq_pk * 10)
        freq_pk = spf_tb.get_major_fre(Table_t[idx], Table_theta[idx])
        save_name = 'fre%.5f_%s.jpg' % (freq_pk, os.path.splitext(os.path.basename(tname))[0])
        fig = spf_tb.light_save_theta_phi(os.path.join(dirpath, save_name), 
                                    Table_t[idx], Table_dt[idx], Table_X[idx], Table_P[idx], Table_P2[idx], 
                                    Table_theta[idx], Table_phi[idx], Table_psi[idx], Table_eta[idx])
        plt.close(fig)

In [5]:
importlib.reload(spf_tb)
theta, phi = 0.0, 1.714

tpick, _ = spf_tb.load_table_date_pickle(job_dir, theta, phi)
Table_t = tpick['Table_t']
Table_dt = tpick['Table_dt']
Table_X = tpick['Table_X']
Table_P = tpick['Table_P']
Table_P2 = tpick['Table_P2']
Table_theta = tpick['Table_theta']
Table_phi = tpick['Table_phi']
Table_psi = tpick['Table_psi']
Table_eta = tpick['Table_eta']
print('-ini_theta %f -ini_phi %f -ini_psi %f' % 
      (tpick['Table_theta'][0], tpick['Table_phi'][0], tpick['Table_psi'][0]))

freq_pk = spf_tb.get_major_fre(Table_t, Table_theta)
idx = Table_t > Table_t.max() - 1 / freq_pk * 10
# spf_tb.show_table_result(Table_t[idx], Table_dt[idx], Table_X[idx], Table_P[idx], Table_P2[idx], 
#                          Table_theta[idx], Table_phi[idx], Table_psi[idx], Table_eta[idx], save_every)
spf_tb.show_theta_phi(Table_t[idx], Table_dt[idx], Table_X[idx], Table_P[idx], Table_P2[idx], 
                      Table_theta[idx], Table_phi[idx], Table_psi[idx], Table_eta[idx], show_back_direction=False)
spf_tb.show_theta_phi_psi_eta(Table_t[idx], Table_dt[idx], Table_X[idx], Table_P[idx], Table_P2[idx], 
                              Table_theta[idx], Table_phi[idx], Table_psi[idx], Table_eta[idx])
spf_tb.show_center_X(Table_t[idx], Table_dt[idx], Table_X[idx], Table_P[idx], Table_P2[idx], 
                     Table_theta[idx], Table_phi[idx], Table_psi[idx], Table_eta[idx], 
                     table_name=table_name)


-ini_theta 0.000000 -ini_phi 0.000000 -ini_psi 3.141593
/anaconda3/envs/py35/lib/python3.5/site-packages/matplotlib/figure.py:2369: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.
  warnings.warn("This figure includes Axes that are not compatible "
Out[5]:
True

In [9]:
with pd.option_context('display.max_rows', 100, 'display.max_columns', 100):
    display(data.theta_max_fre)


ini_phi 0.000 0.143 0.286 0.428 0.571 0.714 0.857 1.000 1.142 1.285 1.428 1.571 1.714 1.856 1.999 2.142 2.285 2.428 2.570 2.713 2.856 2.999 3.142 3.284 3.427 3.570 3.713 3.856 3.998 4.141 4.284 4.427 4.570 4.712 4.855 4.998 5.141 5.284 5.426 5.569 5.712 5.855 5.998 6.140 6.283
ini_theta
0.000 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.015998 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083 0.020083
0.143 0.018999 0.018997 0.018998 0.018998 0.020633 0.018999 0.018998 0.018999 0.019002 0.019000 0.019001 0.019004 0.019002 0.018998 0.018997 0.018997 0.019005 0.020020 0.018996 0.019002 0.016000 0.015999 0.016001 0.015998 0.015999 0.015999 0.015999 0.016001 0.016002 0.015998 0.016001 0.016001 0.015999 0.015999 0.016002 0.018998 0.019915 0.019000 0.018998 0.019000 0.018998 0.019004 0.018997 0.019001 0.018998
0.286 0.019001 0.018997 0.020187 0.019002 0.020551 0.020094 0.019655 0.019004 0.018997 0.018998 0.020085 0.019001 0.018998 0.019004 0.019001 0.019000 0.020159 0.020059 0.018998 0.018998 0.015997 0.016000 0.016004 0.015998 0.016001 0.015997 0.016001 0.015997 0.016002 0.016002 0.015999 0.015999 0.015998 0.015998 0.016000 0.018998 0.019004 0.020344 0.018997 0.018999 0.019004 0.019862 0.019001 0.019671 0.018997
0.428 0.018998 0.019000 0.018999 0.018999 0.018998 0.018998 0.018997 0.018998 0.018998 0.019990 0.018997 0.018998 0.019001 0.019002 0.019002 0.020292 0.019003 0.019001 0.020005 0.018998 0.015999 0.016000 0.015999 0.015999 0.016000 0.015999 0.015999 0.016001 0.016002 0.016001 0.015998 0.015998 0.015999 0.016003 0.016003 0.019002 0.019000 0.018998 0.018997 0.018997 0.018998 0.019926 0.019003 0.019000 0.019001
0.571 0.019700 0.020581 0.019002 0.019672 0.018998 0.018998 0.019000 0.019778 0.018997 0.018998 0.019000 0.020264 0.020354 0.020564 0.019002 0.019001 0.020140 0.018997 0.020486 0.019757 0.016001 0.015999 0.016001 0.015997 0.015997 0.015998 0.015997 0.016002 0.016003 0.016004 0.016000 0.015999 0.016001 0.015997 0.018998 0.018998 0.020533 0.019001 0.018998 0.019001 0.018997 0.018998 0.019002 0.019773 0.019722
0.714 0.018997 0.018998 0.019001 0.018999 0.018997 0.018999 0.018999 0.018996 0.018998 0.020217 0.018999 0.018998 0.020466 0.018998 0.020428 0.020311 0.018998 0.020707 0.019001 0.019005 0.016002 0.015999 0.016001 0.016000 0.015997 0.016000 0.016001 0.016004 0.016001 0.016002 0.016000 0.015999 0.016000 0.016001 0.019000 0.019004 0.019001 0.020414 0.018997 0.020130 0.018999 0.019006 0.019002 0.018998 0.018998
0.857 0.018999 0.018998 0.019001 0.018999 0.018998 0.018999 0.019781 0.019000 0.018998 0.018997 0.020329 0.020418 0.018997 0.018997 0.018998 0.019002 0.018999 0.019000 0.018997 0.018997 0.015998 0.015999 0.015998 0.015999 0.016000 0.015998 0.016003 0.016003 0.016000 0.016000 0.016004 0.015998 0.020052 0.018998 0.019003 0.019005 0.018997 0.018999 0.019002 0.020190 0.018997 0.018997 0.019947 0.019870 0.019001
1.000 0.019816 0.018997 0.019681 0.018998 0.019779 0.018998 0.019002 0.018997 0.018997 0.018997 0.018999 0.018998 0.019000 0.019000 0.020310 0.020168 0.018999 0.018999 0.018996 0.018998 0.015998 0.016004 0.015998 0.016005 0.015998 0.016000 0.015999 0.015999 0.016002 0.015999 0.018999 0.020139 0.018999 0.020242 0.018999 0.018999 0.019000 0.020375 0.020287 0.018997 0.018996 0.018999 0.018998 0.018999 0.019849
1.142 0.020041 0.019003 0.019001 0.018998 0.020358 0.018997 0.018998 0.018997 0.018997 0.020447 0.019004 0.016000 0.016000 0.020283 0.018999 0.018999 0.018998 0.019001 0.016004 0.016003 0.015999 0.015998 0.015997 0.016005 0.016003 0.015998 0.016000 0.018997 0.019690 0.019772 0.020399 0.018998 0.018999 0.019004 0.018998 0.018999 0.018997 0.018998 0.019002 0.020348 0.020254 0.019684 0.020154 0.019000 0.020015
1.285 0.019001 0.020049 0.019000 0.019002 0.019001 0.018998 0.020659 0.018999 0.018997 0.018999 0.019004 0.018997 0.015997 0.018997 0.020111 0.016003 0.020119 0.019004 0.018999 0.018998 0.015999 0.016000 0.016000 0.016003 0.016000 0.019000 0.018999 0.018997 0.018998 0.018998 0.018998 0.018998 0.018999 0.018998 0.018997 0.018998 0.018999 0.018999 0.018998 0.018997 0.018997 0.019001 0.018999 0.018998 0.018999
1.428 0.018999 0.020255 0.018998 0.018997 0.019001 0.019000 0.019636 0.016004 0.020239 0.018999 0.016005 0.020202 0.019001 0.018999 0.018997 0.019000 0.019000 0.018998 0.019001 0.018998 0.020351 0.015999 0.016002 0.019770 0.019633 0.018998 0.019001 0.018999 0.018998 0.020184 0.020381 0.020528 0.019556 0.019851 0.019867 0.020146 0.020745 0.019797 0.019001 0.018999 0.018998 0.018999 0.018998 0.019001 0.019004
1.571 0.018998 0.018999 0.019572 0.015997 0.019001 0.019576 0.018998 0.018999 0.019003 0.018999 0.020809 0.063272 0.019083 0.018997 0.019871 0.016003 0.019002 0.018999 0.018999 0.019000 0.019000 0.018998 0.016003 0.018998 0.019001 0.019004 0.020613 0.019688 0.020313 0.020606 0.019612 0.020116 0.020173 0.063277 0.020187 0.020382 0.019619 0.019850 0.020101 0.020109 0.019974 0.019509 0.019003 0.018997 0.018997
1.714 0.019000 0.020416 0.015999 0.018998 0.019000 0.018996 0.016000 0.016001 0.020301 0.018999 0.018998 0.018998 0.019000 0.018998 0.019000 0.020682 0.020110 0.018999 0.020105 0.018998 0.018999 0.015998 0.016002 0.019004 0.019002 0.019002 0.019000 0.019001 0.019854 0.020352 0.020341 0.020329 0.020379 0.019881 0.020402 0.020296 0.020364 0.020350 0.018998 0.018998 0.019002 0.019003 0.018997 0.018999 0.019004
1.856 0.019001 0.020241 0.018997 0.020045 0.019761 0.016002 0.018997 0.015999 0.015999 0.019000 0.018998 0.019000 0.019003 0.016005 0.019001 0.018997 0.020114 0.019003 0.018999 0.015998 0.015998 0.015999 0.016004 0.018998 0.020527 0.018999 0.018998 0.018998 0.018997 0.018998 0.018998 0.018997 0.018998 0.018997 0.018997 0.018998 0.018998 0.018999 0.018997 0.018997 0.019004 0.018999 0.018997 0.019003 0.018998
1.999 0.020855 0.019002 0.018997 0.019003 0.019002 0.018998 0.018999 0.019662 0.018997 0.019001 0.019001 0.019006 0.018997 0.019003 0.018997 0.019001 0.016002 0.015999 0.016004 0.015998 0.016004 0.016000 0.015997 0.019001 0.019005 0.019992 0.018999 0.018999 0.019641 0.019000 0.018999 0.018999 0.018997 0.018998 0.018997 0.018996 0.020274 0.018999 0.020387 0.018998 0.018997 0.018998 0.019001 0.018997 0.020810
2.142 0.018997 0.018999 0.018996 0.019000 0.019582 0.019000 0.018997 0.019610 0.018999 0.018997 0.018999 0.019005 0.018997 0.018998 0.016004 0.015997 0.016005 0.016002 0.015997 0.015999 0.015999 0.016001 0.015998 0.018999 0.020124 0.018997 0.019883 0.020602 0.018998 0.018998 0.020419 0.018997 0.018997 0.019001 0.019004 0.020184 0.019003 0.018997 0.019003 0.020367 0.018998 0.018997 0.019002 0.019003 0.018998
2.285 0.018997 0.018999 0.018998 0.018998 0.019000 0.020514 0.018998 0.019000 0.019004 0.018998 0.019617 0.016002 0.016003 0.015999 0.016004 0.016003 0.016001 0.015999 0.015999 0.016000 0.015998 0.015998 0.016002 0.016003 0.019001 0.019000 0.018999 0.020576 0.018998 0.019000 0.020417 0.018999 0.020513 0.018999 0.019000 0.018999 0.018999 0.019000 0.019002 0.018998 0.018998 0.020402 0.020298 0.018997 0.018998
2.428 0.018998 0.018998 0.019818 0.018997 0.019594 0.019000 0.020605 0.018997 0.019001 0.015997 0.016003 0.016000 0.015998 0.016004 0.016006 0.016002 0.016003 0.015998 0.015999 0.015999 0.015997 0.015999 0.016000 0.016001 0.019002 0.019745 0.018996 0.018997 0.018996 0.018999 0.019726 0.018997 0.020243 0.019002 0.019861 0.020066 0.019004 0.018999 0.018998 0.019001 0.019006 0.018998 0.018998 0.018998 0.018998
2.570 0.018997 0.018998 0.018999 0.019003 0.018998 0.020564 0.020577 0.018997 0.018999 0.015998 0.016004 0.015999 0.016001 0.015998 0.016002 0.016005 0.016000 0.015998 0.015998 0.015999 0.016000 0.015997 0.016004 0.015998 0.018999 0.018998 0.018997 0.018999 0.018999 0.018999 0.020378 0.018998 0.020279 0.019694 0.019769 0.019914 0.018997 0.018998 0.019002 0.018997 0.019000 0.019005 0.018997 0.018998 0.018997
2.713 0.018997 0.018996 0.018998 0.018998 0.018999 0.018999 0.019000 0.019001 0.019588 0.015998 0.015999 0.015998 0.016002 0.015997 0.016004 0.016001 0.016001 0.016000 0.015998 0.015998 0.015998 0.015998 0.016000 0.015999 0.018996 0.019851 0.018998 0.018998 0.018998 0.018998 0.019002 0.018998 0.019625 0.019002 0.018999 0.018999 0.019776 0.020144 0.018997 0.018997 0.019889 0.018998 0.019001 0.018997 0.018997
2.856 0.019000 0.018999 0.019708 0.019001 0.019000 0.018998 0.018998 0.020562 0.018998 0.015998 0.016004 0.016000 0.016001 0.016004 0.016002 0.016001 0.015998 0.015998 0.015998 0.015997 0.015999 0.015998 0.016003 0.015998 0.019775 0.018998 0.019001 0.018998 0.018998 0.018999 0.018997 0.018999 0.020181 0.019000 0.019004 0.019005 0.018997 0.018999 0.018997 0.019004 0.019000 0.018999 0.018997 0.018999 0.019000
2.999 0.018997 0.018997 0.018998 0.019001 0.018997 0.019000 0.018998 0.018999 0.019001 0.016006 0.016004 0.015999 0.015999 0.016001 0.016000 0.016005 0.016001 0.016000 0.015999 0.015998 0.015999 0.016000 0.016000 0.015999 0.016001 0.019788 0.018999 0.019001 0.018997 0.018998 0.018998 0.018997 0.018999 0.019696 0.018999 0.018999 0.018997 0.018997 0.019000 0.018997 0.019004 0.020276 0.020269 0.018997 0.018997
3.142 0.015998 0.015996 0.015997 0.018998 0.018999 0.019004 0.019682 0.018999 0.018997 0.019688 0.018998 0.018999 0.019701 0.018998 0.019980 0.018999 0.018998 0.018997 0.019005 0.020280 0.018998 0.019000 0.019002 0.018999 0.018997 0.018999 0.018997 0.019001 0.018998 0.019003 0.018999 0.019002 0.016002 0.015997 0.015998 0.016003 0.016004 0.015999 0.015999 0.015999 0.015998 0.015998 0.015998 0.015997 0.016001

In [10]:
# sort all frequrents
with np.printoptions(precision=10, suppress=True, threshold=1e10):
    print(np.flipud(np.sort(data.theta_max_fre.values.flatten())))


[0.0632770091 0.0632717677 0.020855155  0.0208103735 0.020809204  0.0207452762
 0.020707463  0.0206821816 0.020658612  0.020632951  0.0206134733 0.0206059217
 0.0206045051 0.0206016825 0.0205810156 0.0205770801 0.0205760525 0.0205644981
 0.0205639364 0.0205618132 0.020551193  0.0205327186 0.0205281786 0.0205271145
 0.0205143022 0.0205133515 0.0204863757 0.0204657082 0.0204465797 0.0204277897
 0.0204192935 0.0204184387 0.0204166935 0.0204155654 0.020414049  0.020402034
 0.0204015511 0.0203987845 0.0203873559 0.0203819858 0.020381396  0.0203787332
 0.0203780325 0.020375334  0.0203673427 0.0203635788 0.020357861  0.0203536244
 0.0203520013 0.0203508526 0.0203498547 0.0203477851 0.0203441207 0.0203411389
 0.0203290677 0.0203288434 0.0203129242 0.0203112719 0.0203103549 0.0203007465
 0.0202984794 0.020296226  0.0202923998 0.0202866723 0.0202828222 0.020280319
 0.0202788217 0.0202759179 0.02027442   0.0202686184 0.0202640626 0.0202552119
 0.0202539961 0.0202433288 0.0202415594 0.0202406389 0.0202386063 0.0202166397
 0.0202024228 0.0201898986 0.0201873723 0.0201866556 0.0201843955 0.0201842696
 0.0201813029 0.0201725264 0.0201676217 0.020159182  0.0201539184 0.0201458351
 0.0201440256 0.0201399898 0.020139494  0.0201298954 0.0201238986 0.0201189908
 0.0201160671 0.0201135093 0.0201114977 0.0201097579 0.020108689  0.0201050816
 0.0201013402 0.0200935781 0.0200853738 0.0200830451 0.0200830451 0.0200830451
 0.0200830451 0.0200830451 0.0200830451 0.0200830451 0.0200830451 0.0200830451
 0.0200830451 0.0200830451 0.0200830451 0.0200830451 0.0200830451 0.0200830451
 0.0200830451 0.0200830451 0.0200830451 0.0200830451 0.0200830451 0.0200830451
 0.0200830451 0.0200830451 0.0200830451 0.0200655001 0.0200585078 0.0200523968
 0.0200487796 0.020045347  0.020041325  0.0200198826 0.0200148896 0.0200045207
 0.0199917134 0.0199901069 0.0199797986 0.0199741369 0.0199467056 0.0199259901
 0.0199146169 0.019914413  0.0198885745 0.0198831221 0.0198805468 0.0198709881
 0.0198703198 0.0198667008 0.0198619518 0.0198614937 0.01985439   0.0198509821
 0.0198505742 0.0198500617 0.0198490646 0.0198178601 0.0198164417 0.0197973546
 0.0197883191 0.0197807013 0.0197791736 0.0197779975 0.0197764237 0.019774731
 0.0197726424 0.0197715438 0.0197704881 0.0197685661 0.0197605836 0.0197569941
 0.0197446741 0.0197257367 0.0197218668 0.01970825   0.0197012443 0.0196999747
 0.0196962584 0.0196944407 0.019689755  0.0196877866 0.0196876893 0.0196837957
 0.0196815003 0.0196807083 0.0196723423 0.0196708951 0.0196624268 0.0196547271
 0.0196410605 0.019635914  0.0196331092 0.01962475   0.0196190344 0.0196169899
 0.0196115827 0.0196098942 0.0195935698 0.0195883894 0.0195823375 0.0195762703
 0.0195715593 0.0195555623 0.0195088619 0.0190829563 0.0190062803 0.019005793
 0.0190056163 0.0190054873 0.0190053976 0.0190048569 0.0190048084 0.0190047569
 0.0190047246 0.0190046542 0.0190045846 0.0190044978 0.0190044692 0.0190044201
 0.0190043502 0.0190042795 0.0190042386 0.0190042049 0.0190041767 0.0190041082
 0.0190041047 0.0190040385 0.0190039942 0.0190039076 0.019003885  0.0190037823
 0.0190037281 0.0190037248 0.0190036885 0.0190036877 0.0190036793 0.0190036162
 0.0190035992 0.0190035908 0.0190034756 0.0190034554 0.0190034122 0.0190034059
 0.0190033557 0.0190031977 0.019003134  0.0190030356 0.0190028761 0.0190028615
 0.0190027541 0.0190027522 0.0190027291 0.019002721  0.0190026872 0.0190025423
 0.0190025246 0.0190024656 0.0190024288 0.0190024116 0.0190023351 0.0190022834
 0.0190021971 0.0190021762 0.0190020571 0.0190020326 0.0190020161 0.0190020007
 0.0190019888 0.0190019347 0.0190019334 0.0190018943 0.0190018789 0.0190018318
 0.0190018247 0.0190018208 0.0190017921 0.0190017152 0.0190017129 0.0190016587
 0.0190016087 0.0190016081 0.0190016071 0.0190015994 0.019001593  0.0190015928
 0.0190015172 0.0190015052 0.0190014915 0.0190014411 0.0190014246 0.0190013658
 0.0190013562 0.0190013336 0.0190013035 0.0190012879 0.0190012768 0.0190012622
 0.0190012596 0.0190012405 0.0190012309 0.0190012049 0.0190011185 0.0190011164
 0.0190011024 0.0190010508 0.0190010482 0.0190010428 0.0190010031 0.0190009989
 0.0190009795 0.019000969  0.0190009611 0.0190009347 0.0190009033 0.0190008977
 0.0190008774 0.0190008676 0.019000862  0.0190008099 0.0190008098 0.0190007871
 0.0190007829 0.0190007802 0.019000763  0.0190007366 0.0190007239 0.0190007175
 0.0190006902 0.0190006848 0.019000678  0.0190006324 0.0190006164 0.0190006099
 0.0190005918 0.0190005601 0.0190005176 0.0190005124 0.0190004459 0.0190004287
 0.0190004284 0.0190003946 0.0190003754 0.0190003357 0.0190003224 0.0190002966
 0.0190002765 0.0190002745 0.0190002717 0.0190002596 0.0190001879 0.0190001703
 0.0190001668 0.0190001411 0.0190001265 0.0190001111 0.01900005   0.0190000278
 0.0189999979 0.0189999938 0.0189999898 0.0189999693 0.0189999076 0.0189999075
 0.0189998929 0.0189998828 0.0189998586 0.0189998576 0.0189998053 0.0189997956
 0.0189997848 0.018999692  0.0189996919 0.0189996913 0.01899969   0.0189996798
 0.0189996687 0.0189996283 0.018999622  0.0189996028 0.0189995879 0.0189995872
 0.0189995684 0.0189995362 0.0189995345 0.0189995335 0.0189995139 0.0189995133
 0.0189994821 0.0189994792 0.0189994729 0.0189994563 0.0189994386 0.0189994158
 0.0189994025 0.0189993934 0.0189993923 0.0189993855 0.0189993601 0.0189993569
 0.0189993557 0.018999352  0.0189993512 0.0189993507 0.0189993415 0.0189993321
 0.0189993321 0.0189993173 0.0189993079 0.0189993065 0.0189992658 0.0189992553
 0.018999244  0.018999238  0.0189992322 0.0189992205 0.0189992195 0.018999218
 0.0189992036 0.0189992019 0.018999197  0.018999178  0.0189991763 0.0189991752
 0.0189991738 0.018999148  0.0189991451 0.0189991375 0.0189991302 0.0189990993
 0.0189990885 0.0189990659 0.0189990499 0.0189990481 0.0189990363 0.0189990362
 0.0189990041 0.0189989672 0.0189989538 0.0189989498 0.0189989482 0.0189989445
 0.0189989359 0.0189989341 0.0189989221 0.018998916  0.0189989083 0.0189988902
 0.018998841  0.0189988391 0.0189988273 0.0189988228 0.0189988058 0.0189988007
 0.0189987995 0.018998795  0.0189987888 0.0189987683 0.018998763  0.0189987597
 0.0189987575 0.0189987531 0.0189987487 0.0189987324 0.0189987258 0.0189987
 0.0189986925 0.0189986739 0.0189986706 0.0189986525 0.0189986478 0.0189986418
 0.0189986161 0.0189985998 0.0189985989 0.0189985939 0.0189985773 0.0189985751
 0.0189985746 0.0189985707 0.0189985611 0.0189985563 0.0189985449 0.0189985352
 0.0189985224 0.0189985223 0.0189985197 0.0189985168 0.0189985062 0.0189985025
 0.0189985018 0.0189984801 0.0189984748 0.0189984543 0.0189984145 0.0189984121
 0.0189984045 0.0189984023 0.0189984017 0.0189983963 0.0189983959 0.0189983651
 0.0189983552 0.0189983551 0.0189983533 0.0189983533 0.0189983483 0.0189983273
 0.0189983257 0.0189983033 0.018998289  0.0189982666 0.0189982631 0.0189982506
 0.0189982397 0.0189982394 0.0189982331 0.0189982308 0.0189982238 0.0189982182
 0.0189982137 0.0189982135 0.0189982073 0.0189982046 0.0189982044 0.0189982014
 0.0189982    0.0189981927 0.0189981868 0.0189981838 0.0189981837 0.018998163
 0.0189981555 0.0189981426 0.0189981383 0.0189981347 0.0189981324 0.0189981309
 0.018998122  0.0189981192 0.018998119  0.0189981023 0.0189980904 0.0189980882
 0.0189980775 0.0189980668 0.0189980631 0.0189980617 0.018998059  0.0189980541
 0.0189980511 0.0189980444 0.0189980372 0.0189980226 0.0189980213 0.0189980164
 0.0189980082 0.0189980042 0.0189979981 0.0189979931 0.0189979824 0.0189979755
 0.0189979696 0.018997961  0.018997958  0.0189979534 0.0189979527 0.0189979498
 0.0189979455 0.018997944  0.0189979366 0.018997935  0.0189979315 0.0189979294
 0.0189979249 0.0189979129 0.0189979082 0.0189978998 0.0189978892 0.0189978828
 0.0189978821 0.0189978774 0.0189978672 0.0189978624 0.0189978601 0.0189978529
 0.0189978387 0.0189978357 0.0189978329 0.0189978188 0.0189978093 0.0189978017
 0.0189978002 0.0189977901 0.0189977882 0.0189977821 0.0189977802 0.0189977765
 0.018997776  0.0189977675 0.0189977587 0.0189977515 0.0189977469 0.0189977455
 0.0189977412 0.0189977391 0.0189977372 0.0189977269 0.0189977258 0.018997718
 0.0189977178 0.0189977171 0.0189977108 0.018997705  0.0189976799 0.0189976797
 0.0189976612 0.018997656  0.0189976375 0.018997629  0.0189976245 0.0189976143
 0.0189976109 0.0189976103 0.0189976001 0.0189975918 0.0189975914 0.018997549
 0.0189975368 0.0189975325 0.018997529  0.0189975286 0.0189975188 0.0189975044
 0.0189975042 0.0189974941 0.018997476  0.0189974722 0.0189974651 0.0189974647
 0.0189974563 0.018997454  0.0189974496 0.0189974438 0.01899744   0.0189974357
 0.0189974215 0.0189973993 0.0189973923 0.0189973877 0.0189973836 0.0189973798
 0.0189973714 0.0189973581 0.0189973555 0.0189973551 0.0189973547 0.0189973524
 0.0189973361 0.0189973315 0.0189973285 0.0189973178 0.0189973099 0.0189972784
 0.0189972768 0.0189972729 0.0189972727 0.0189972685 0.018997267  0.0189972558
 0.0189972541 0.0189972536 0.0189972388 0.0189972334 0.0189972329 0.0189972239
 0.0189972172 0.0189972166 0.0189972128 0.0189972082 0.0189972051 0.0189972011
 0.0189971975 0.0189971966 0.0189971953 0.0189971949 0.0189971929 0.0189971916
 0.0189971913 0.0189971909 0.0189971766 0.0189971666 0.0189971525 0.0189971444
 0.0189971245 0.0189971228 0.0189971108 0.0189971004 0.0189970925 0.0189970858
 0.018997063  0.0189970576 0.018997042  0.0189970354 0.0189970334 0.0189970114
 0.0189970033 0.0189969984 0.018996989  0.0189969813 0.0189969789 0.0189969718
 0.0189969712 0.018996969  0.0189969599 0.0189969572 0.018996957  0.0189969289
 0.0189969265 0.0189969242 0.0189969214 0.0189969156 0.0189969068 0.0189969055
 0.0189969054 0.0189968997 0.0189968888 0.0189968735 0.0189968696 0.0189968611
 0.0189968546 0.0189968478 0.0189968165 0.0189968102 0.0189967918 0.0189967727
 0.0189967619 0.0189967173 0.0189967128 0.018996689  0.018996661  0.0189966574
 0.0189966369 0.0189966279 0.018996614  0.0189965523 0.018996526  0.0189964938
 0.0189964929 0.0189964899 0.0189964856 0.0189964828 0.0189964762 0.0189964604
 0.0189964503 0.0189964124 0.0189963233 0.0189962185 0.0160058695 0.016005516
 0.0160053114 0.0160053087 0.0160052625 0.0160051612 0.016004901  0.0160048354
 0.0160046906 0.016004462  0.0160043509 0.0160043395 0.0160043233 0.0160042684
 0.0160042121 0.0160040296 0.0160040115 0.0160039992 0.0160039851 0.0160039668
 0.0160038637 0.016003841  0.0160038313 0.0160037987 0.0160037859 0.016003735
 0.0160036013 0.0160035639 0.0160035202 0.0160034938 0.0160034611 0.0160033114
 0.0160032997 0.0160031457 0.0160031037 0.0160030018 0.0160029989 0.016002993
 0.0160029879 0.016002957  0.0160029198 0.0160028559 0.0160027825 0.0160027052
 0.0160026987 0.0160025968 0.0160025222 0.0160024579 0.0160023494 0.0160023404
 0.0160023068 0.0160022869 0.0160022224 0.0160021437 0.0160021423 0.0160021001
 0.016002069  0.0160020663 0.0160020583 0.0160019812 0.0160019713 0.0160019133
 0.0160019071 0.0160018836 0.0160016584 0.0160016281 0.0160016062 0.0160015887
 0.0160014805 0.016001478  0.0160014714 0.0160014465 0.0160014205 0.0160014147
 0.0160013366 0.0160013339 0.0160012691 0.0160012572 0.0160011939 0.0160011822
 0.0160011661 0.0160010682 0.0160010564 0.016001052  0.0160009159 0.0160008292
 0.0160007632 0.0160007126 0.0160006792 0.0160006687 0.0160006218 0.0160005636
 0.0160005621 0.0160005363 0.0160005234 0.0160005013 0.0160004895 0.0160004723
 0.0160004329 0.0160003394 0.0160003098 0.0160002916 0.0160002563 0.0160002473
 0.0160002126 0.016000101  0.0160000681 0.0160000642 0.0160000493 0.0160000465
 0.0160000371 0.0160000337 0.015999979  0.0159999745 0.0159999716 0.0159999445
 0.0159999177 0.0159999151 0.0159998527 0.0159998349 0.0159998254 0.0159997885
 0.0159997565 0.0159997559 0.0159996904 0.0159996782 0.0159996459 0.0159995595
 0.0159995311 0.0159995045 0.0159994815 0.0159994631 0.0159994482 0.0159994446
 0.0159994412 0.01599942   0.0159994122 0.0159993954 0.0159993792 0.0159993773
 0.0159993763 0.0159993714 0.0159993128 0.0159992926 0.0159992888 0.0159992571
 0.0159992184 0.0159992079 0.0159991939 0.0159991921 0.0159991831 0.0159991471
 0.0159991417 0.0159990334 0.01599899   0.0159989777 0.0159989635 0.0159989595
 0.01599891   0.0159988793 0.0159988666 0.0159988645 0.0159988296 0.0159988112
 0.0159987944 0.0159987903 0.015998764  0.0159987373 0.0159986884 0.0159986847
 0.0159986805 0.0159986535 0.015998649  0.0159986442 0.0159986357 0.0159986354
 0.0159986315 0.0159986168 0.0159986084 0.0159985768 0.0159985756 0.0159985375
 0.0159984426 0.0159984367 0.0159984361 0.0159984264 0.015998421  0.0159984156
 0.0159983975 0.0159983927 0.0159983528 0.0159983521 0.0159983354 0.0159983298
 0.0159983194 0.0159982824 0.0159982683 0.0159982587 0.0159982293 0.0159982043
 0.0159981949 0.0159981814 0.0159981706 0.0159981634 0.0159981629 0.0159981629
 0.0159981629 0.0159981629 0.0159981629 0.0159981629 0.0159981629 0.0159981629
 0.0159981629 0.0159981629 0.0159981629 0.0159981629 0.0159981629 0.0159981629
 0.0159981629 0.0159981629 0.0159981629 0.0159981629 0.0159981629 0.0159981629
 0.0159981629 0.0159980929 0.0159980828 0.0159980742 0.0159980607 0.0159980429
 0.0159980381 0.0159980283 0.015998027  0.0159980173 0.0159980169 0.0159980137
 0.0159980042 0.0159980014 0.0159979393 0.0159979372 0.0159979305 0.0159979206
 0.0159979098 0.0159979017 0.0159978868 0.0159978336 0.0159978041 0.0159978026
 0.01599773   0.0159976687 0.0159976513 0.0159975533 0.0159974235 0.0159974039
 0.0159973766 0.0159973273 0.0159973197 0.0159972777 0.0159972519 0.0159972509
 0.0159972291 0.0159971903 0.0159971861 0.0159971662 0.0159971043 0.0159970746
 0.0159970725 0.0159970578 0.0159970471 0.0159969622 0.0159969445 0.0159968975
 0.0159968052 0.0159967848 0.0159964849]

In [11]:
spf_tb.show_traj_phase_map_fre(theta_max_fre)
# spf_tb.show_traj_phase_map_fre(phi_max_fre)
# spf_tb.show_traj_phase_map_fre(psi_max_fre)
# spf_tb.show_traj_phase_map_fre(eta_max_fre)


Out[11]:
True

In [7]:
# put images with same frequence into a subdirect
importlib.reload(spf_tb)
def t_show_idx(iidx):
    theta = type_fre.index.values[iidx[0][0]]
    phi = type_fre.columns.values[iidx[1][0]]
    print(theta, phi)
    tipical_th_ph_list.append((theta, phi))
    spf_tb.show_pickle_results(job_dir, theta, phi, table_name)
    return True

def t_show_idx_list(iidx, nshow=5, Table_t_range1=np.array((0, np.inf)), Table_t_range2=np.array((0, np.inf))):
    nshow = int(np.min((nshow, iidx[0].size)))
    tidx = np.random.choice(iidx[0].size, nshow, replace=False)
    theta = type_fre.index.values[iidx[0][tidx]]
    phi = type_fre.columns.values[iidx[1][tidx]]
    theta_phi_list = np.vstack((theta, phi)).T
#     spf_tb.show_table_theta_phi_list(theta_phi_list, job_dir, Table_t_range=Table_t_range1, figsize=np.array((20, 20)), dpi=100)
    spf_tb.show_table_result_list(theta_phi_list, job_dir, Table_t_range=Table_t_range2, figsize=np.array((16, 9)), dpi=100)
    return True

tfre = theta_max_fre.copy()
check_fre_list = [0.0160, 0.0190, 0.0203, 0.0632]
atol_fre_list =  [0.0001, 0.0001, 0.0008, 0.0008]
Table_t_range1 = np.array((0, 1000))
Table_t_range2 = np.array((4500, np.inf))
nshow = np.inf

tipical_th_ph_list = []
type_fre = tfre.copy()
type_fre.iloc[:, :] = len(check_fre_list) 
for i0, (check_fre, atol_fre) in enumerate(zip(check_fre_list, atol_fre_list)):
    use_idx = np.isclose(tfre, check_fre, rtol=0, atol=atol_fre)
    type_fre.iloc[use_idx] = i0
    iidx = np.where(use_idx)
#     t_show_idx(iidx)
#     t_show_idx_list(iidx, nshow=nshow, Table_t_range1=Table_t_range1, Table_t_range2=Table_t_range2)

# plot one of the remaind cases
if np.any(type_fre.values == len(check_fre_list)):
    iidx = np.where(type_fre.values == len(check_fre_list))
#     t_show_idx(iidx)
#     t_show_idx_list(iidx, nshow=nshow, Table_t_range1=Table_t_range1, Table_t_range2=Table_t_range2)

spf_tb.show_traj_phase_map_type(type_fre)
# spf_tb.save_separate_angleList_fft(job_dir, tfre, check_fre_list, atol_fre_list)


Out[7]:
True

In [32]:
# create phase map
def tget_ax0():
    n_xticks = 32
    xticks = np.arange(n_xticks)
    fig = plt.figure(figsize=(20, 20))
    fig.patch.set_facecolor('white')
    axs = []
    axs.append(fig.add_subplot(221, polar=True))
    axs.append(fig.add_subplot(222, polar=True))
    axs.append(fig.add_subplot(223, polar=True))
    axs.append(fig.add_subplot(224, polar=True))
    for ax0 in axs:
        ax0.set_xticks(xticks / n_xticks * 2 * np.pi)
        ax0.set_xticklabels(['$\dfrac{%d}{%d}2\pi$' % (i0, n_xticks) for i0 in xticks])
        ax0.set_yticklabels([])
        ax0.set_ylim(0, np.pi)
    plt.tight_layout()
    return fig, axs

check_fre_list = [0.0160, 0.0190, 0.0203, 0.0632]
atol_fre_list =  [0.0001, 0.0001, 0.0008, 0.0008]
color_list =     [np.array(plt.get_cmap('tab20', len(check_fre_list))(i0)[:3]).reshape((1, 3)) 
                  for i0 in np.arange(len(check_fre_list))]
psi_lim_fct = 20
resampling_fct = 10

data0['use_max_fre'] = data0.theta_max_fre
case_path_list = spf_tb.separate_fre_path(check_fre_list, atol_fre_list, data0, pickle_path_list)
for idx, psi_lim1 in enumerate(np.linspace(0, 2 * np.pi, psi_lim_fct * 16, 
                                           endpoint=False)[::psi_lim_fct]):
    fig, (ax0, ax1, ax2, ax3) = tget_ax0()
    ax_list = [ax0, ax0, ax1, ax2, ax3]
    psi_lim = (psi_lim1, psi_lim1 + 2 * np.pi / (psi_lim_fct * 16))
    desc = '$\psi\in[%.3f\pi, %.3f\pi)$' % ((psi_lim[0] / np.pi), (psi_lim[1] / np.pi))
    fig.suptitle(desc, fontsize=fontsize*0.8)
    for check_fre, case_path, color, axi in zip(check_fre_list, case_path_list, color_list, ax_list):
        thandle = '%f' % check_fre
        spf_tb.draw_phase_map_theta(case_path, color, psi_lim, axs=(axi, ax_list[-1]), thandle=thandle, 
                                    resampling=True, resampling_fct=resampling_fct)
    tdir = os.path.join(PWD, job_dir, 'phase_mape_fre')
    if not os.path.exists(tdir):
        os.makedirs(tdir)
    figname = os.path.join(tdir, '%04d.png' % (idx))
    fig.savefig(os.path.join(tdir, figname))
    print('save to %s' % figname)
    plt.close(fig)


0th frequence range: (0.015900, 0.016100)
1th frequence range: (0.018900, 0.019100)
2th frequence range: (0.019500, 0.021100)
3th frequence range: (0.062400, 0.064000)



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0000.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0001.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0002.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0003.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0004.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0005.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0006.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0007.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0008.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0009.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0010.png


save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0011.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0012.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0013.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0014.png



save to /home/zhangji/stokes_flow_master/head_Force/do_calculate_table/ecoC01B05_passive_psi-0a/phase_mape_fre/0015.png

In [ ]:

calculate the phase map of stable trajectory using the KMeans method.


In [186]:
# show phase map of theta-phi, part 1
importlib.reload(spf_tb)
job_dir = 'ecoC01B05_T0.01_psi-0a'
table_name = 'ecoC01B05_T0.01'

t_headle = '(.*?).pickle'
t_path = os.listdir(os.path.join(PWD, job_dir))
filename_list = [filename for filename in os.listdir(os.path.join(PWD, job_dir)) 
                 if re.match(t_headle, filename) is not None]
ini_theta_list = []
ini_phi_list = []
lst_eta_list = []
pickle_path_list = []
idx_list = []
theta_primary_fre_list = []
phi_primary_fre_list = []
psi_primary_fre_list = []
for i0, tname in enumerate(tqdm_notebook(filename_list[:])):
    tpath = os.path.join(PWD, job_dir, tname)
    with open(tpath, 'rb') as handle:
        tpick = pickle.load(handle)
    ini_theta_list.append(tpick['ini_theta'])
    ini_phi_list.append(tpick['ini_phi'])
    lst_eta_list.append(tpick['Table_eta'][-1])
    pickle_path_list.append(tpath)
    idx_list.append(i0)
    
    # fft rule
    tx = tpick['Table_t']
    tmin = np.max((0, tx.max() - 1000))
    idx = tx > tmin
    # the last frequence is the major frequence. 
    use_fft_number = 3
    t1 = -use_fft_number - 1
    theta_primary_fre_list.append(spf_tb.get_primary_fft_fre(tx[idx], tpick['Table_theta'][idx])[t1:-1])
    phi_primary_fre_list.append(spf_tb.get_primary_fft_fre(tx[idx], tpick['Table_phi'][idx])[t1:-1])
    psi_primary_fre_list.append(spf_tb.get_primary_fft_fre(tx[idx], tpick['Table_psi'][idx])[t1:-1])


/home/zhangji/anaconda3/lib/python3.5/site-packages/ipykernel/__main__.py:17: TqdmDeprecationWarning: This function will be removed in tqdm==5.0.0
Please use `tqdm.notebook.tqdm` instead of `tqdm.tqdm_notebook`


In [216]:
# show phase map of theta-phi, part 2
def show_phase_map(tuse):
    fig = plt.figure(figsize=(20, 12), dpi=300)
    fig.patch.set_facecolor('white')
    ax0 = fig.add_subplot(111, polar=True)
    n_xticks = 32
    xticks = np.arange(n_xticks)
    ax0.set_xticks(xticks / n_xticks * 2 * np.pi)
    ax0.set_xticklabels(['$\dfrac{%d}{%d}2\pi$' % (i0, n_xticks) for i0 in xticks])
    ax0.set_yticklabels([])
    ax0.set_ylim(0, np.pi)
    tdata = tuse.values
    im = ax0.pcolor(tuse.columns.values, tuse.index.values, tdata, 
                    cmap=plt.get_cmap('Set2', np.nanmax(tdata)+1), 
                    vmin=np.nanmin(tdata)-.5, vmax=np.nanmax(tdata)+.5)
    ticks = np.arange(np.nanmin(tdata), np.nanmax(tdata)+1)
    fig.colorbar(im, ax=ax0, orientation='vertical', ticks=ticks).ax.tick_params(labelsize=fontsize)

In [257]:
np.around(np.pi, 3)


Out[257]:
3.142

In [239]:
from sklearn.cluster import KMeans
from sklearn.mixture import GaussianMixture

use_data = np.hstack((np.vstack(theta_primary_fre_list)[:, 1:], 
                      np.vstack(phi_primary_fre_list)[:, 1:]))
#KMeans
km = KMeans(n_clusters=6, n_init=10, max_iter=1000, tol=1e-9, precompute_distances=True, n_jobs=-1, random_state=0)
km.fit(use_data)
km.predict(use_data)
tlabels = km.labels_

# # personal process
# tlabels[tlabels == 4] = 3

tdata1 = pd.DataFrame({'ini_theta': np.around(ini_theta_list, 3), 
                      'ini_phi': np.around(ini_phi_list, 3), 
                      'lst_eta': np.around(lst_eta_list, 3), 
                      'use_fre': tlabels, 
                      'data_idx': idx_list })
tdata1 = tdata1.pivot_table(index=['ini_theta'], columns=['ini_phi'])
show_phase_map(tdata1.use_fre)



In [250]:
np.array(ini_theta_list)[tlabels==show_tlabel]


Out[250]:
array([0.81955, 0.40977, 2.18546, 0.81955, 0.68295, 0.54636, 0.81955, 1.77568, 2.59523,
       2.59523, 1.5025 , 2.86841, 0.13659, 2.04887, 2.04887, 1.5025 , 1.77568, 2.59523,
       0.95614, 0.40977, 0.81955, 0.40977, 2.04887, 1.77568, 1.63909, 0.13659, 1.77568,
       1.36591, 1.63909, 1.36591, 1.77568, 2.32205, 3.005  , 2.32205, 0.54636, 2.32205,
       1.36591, 3.14159, 2.18546, 3.005  , 0.81955, 2.73182, 2.04887, 1.09273, 3.14159,
       2.86841, 0.27318, 1.77568, 2.18546, 0.27318, 3.14159, 2.73182, 1.5025 , 0.54636,
       1.36591, 1.5025 , 2.45864, 1.63909, 3.005  , 0.95614, 1.36591, 2.59523, 1.77568,
       0.81955, 1.63909, 2.18546, 2.04887, 0.54636, 0.40977, 0.13659, 1.63909, 2.18546,
       2.18546, 0.40977, 1.22932, 2.73182, 1.77568, 2.32205, 3.14159, 1.09273, 0.27318,
       2.59523, 1.36591, 1.36591, 3.005  , 2.18546, 2.59523, 2.45864, 0.40977, 1.09273,
       2.59523, 1.77568, 2.45864, 1.5025 , 0.27318, 1.63909, 2.04887, 0.95614, 2.45864,
       0.68295, 1.36591, 1.36591, 2.59523, 1.22932, 2.32205, 2.59523, 2.45864, 2.86841,
       0.54636, 2.45864, 2.86841, 2.32205, 1.77568, 1.22932, 1.22932, 2.73182, 2.86841,
       0.54636, 0.54636, 2.86841, 2.86841, 1.22932, 1.5025 , 2.73182, 1.36591, 1.5025 ,
       1.36591, 2.59523, 1.63909, 0.40977, 0.81955, 1.77568, 0.68295, 0.27318, 1.77568,
       0.68295, 1.36591, 0.40977, 0.95614, 1.36591, 0.54636, 2.32205, 0.27318, 2.45864,
       1.36591, 0.81955, 0.68295, 1.22932, 3.14159, 2.04887, 1.09273, 0.13659, 0.95614,
       3.005  , 2.18546, 2.32205, 0.40977, 0.95614, 2.73182, 0.13659, 1.5025 , 2.45864,
       0.13659, 2.04887, 0.68295, 2.18546, 1.77568, 0.40977, 0.54636, 0.13659, 1.5025 ,
       0.95614, 0.95614, 1.36591, 0.40977, 0.81955, 0.95614, 1.77568, 2.86841, 0.68295,
       0.27318, 0.68295, 2.32205, 0.27318, 0.13659, 0.54636, 0.27318, 1.36591, 1.91227,
       2.73182, 2.18546, 2.59523, 3.14159, 3.14159, 2.32205, 2.04887, 0.40977, 2.59523,
       3.14159, 1.5025 , 2.59523, 3.005  , 0.54636, 2.18546, 0.13659, 0.68295, 2.86841,
       3.005  , 2.73182, 2.73182, 3.005  , 0.95614, 1.5025 , 2.32205, 1.77568, 3.14159,
       2.45864, 0.81955, 0.68295, 3.005  , 1.91227, 2.86841, 0.54636, 1.36591, 1.91227,
       1.63909, 0.54636, 0.95614, 2.73182, 0.68295, 1.36591, 2.18546, 3.14159])

In [251]:
importlib.reload(spf_tb)
show_tlabel = 0

for theta, phi in zip(np.array(ini_theta_list)[tlabels==show_tlabel][:10], 
                         np.array(ini_phi_list)[tlabels==show_tlabel][:10]): 
    spf_tb.show_pickle_results(job_dir, theta, phi, table_name, fast_mode=1)


-ini_theta 0.819546 -ini_phi 1.604218 -ini_psi 0.000000
-ini_theta 0.409773 -ini_phi 0.133685 -ini_psi 0.000000
-ini_theta 2.185456 -ini_phi 0.534739 -ini_psi 0.000000
-ini_theta 0.819546 -ini_phi 2.540011 -ini_psi 0.000000
-ini_theta 0.682955 -ini_phi 0.133685 -ini_psi 0.000000
-ini_theta 0.546364 -ini_phi 0.534739 -ini_psi 0.000000
-ini_theta 0.819546 -ini_phi 0.133685 -ini_psi 0.000000
-ini_theta 1.775683 -ini_phi 0.935794 -ini_psi 0.000000
-ini_theta 2.595229 -ini_phi 0.267370 -ini_psi 0.000000
-ini_theta 2.595229 -ini_phi 0.133685 -ini_psi 0.000000

In [241]:
importlib.reload(spf_tb)

for show_tlabel in np.arange(tlabels.max()+1): 
    theta = np.array(ini_theta_list)[tlabels==show_tlabel][0]
    phi = np.array(ini_phi_list)[tlabels==show_tlabel][0]
    spf_tb.show_pickle_results(job_dir, theta, phi, table_name, fast_mode=2)


-ini_theta 0.819546 -ini_phi 1.604218 -ini_psi 0.000000
-ini_theta 3.005002 -ini_phi 0.401054 -ini_psi 0.000000
-ini_theta 1.639092 -ini_phi 0.267370 -ini_psi 0.000000
-ini_theta 3.141592 -ini_phi 0.334212 -ini_psi 0.000000
-ini_theta 2.595229 -ini_phi 2.807381 -ini_psi 0.000000
-ini_theta 2.458638 -ini_phi 3.074750 -ini_psi 0.000000

In [ ]:
tlabels=