res_reg_lmnt_awikner.helpers

 1import numpy as np
 2from numba import jit, objmode
 3from scipy.signal import find_peaks
 4import os
 5
 6
 7def get_windows_path(path_base):
 8    path = path_base.replace('/', '\\')
 9    path = u"\\\\?\\" + path
10    return path
11
12
13@jit(nopython=True, fastmath=True)
14def poincare_max(traj, idxs=np.empty(1, dtype=np.intc)):
15    if idxs.size == 0:
16        idxs = np.arange(traj.shape[0])
17    poincare_map = []
18    for j in idxs:
19        with objmode(peaks='int64[:]'):
20            peaks, tmp = find_peaks(traj[j])
21        pmap = np.zeros(peaks.size)
22        for i, peak in enumerate(peaks):
23            with objmode(polyvals='double[:]'):
24                polyvals = np.polyfit(np.arange(3), traj[j, peak - 1:peak + 2], 2)
25            if polyvals[0] == 0:
26                if polyvals[1] <= 0:
27                    pmap[i] = polyvals[2]
28                else:
29                    pmap[i] = polyvals[2] + polyvals[1] * 2
30            else:
31                pmap[i] = polyvals[2] - polyvals[1] ** 2.0 / (4 * polyvals[0])
32        poincare_map.append(pmap)
33    return poincare_map
34
35
36@jit(nopython=True, fastmath=True)
37def poincare_max_peaks(traj, idxs=np.empty(1, dtype=np.intc)):
38    if idxs.size == 0:
39        idxs = np.arange(traj.shape[0])
40    poincare_map = []
41    peaks_all = []
42    for j in idxs:
43        with objmode(peaks='int64[:]'):
44            peaks, tmp = find_peaks(traj[j])
45        pmap = np.zeros(peaks.size)
46        for i, peak in enumerate(peaks):
47            with objmode(polyvals='double[:]'):
48                polyvals = np.polyfit(np.arange(3), traj[j, peak - 1:peak + 2], 2)
49            if polyvals[0] == 0:
50                if polyvals[1] <= 0:
51                    pmap[i] = polyvals[2]
52                else:
53                    pmap[i] = polyvals[2] + polyvals[1] * 2
54            else:
55                pmap[i] = polyvals[2] - polyvals[1] ** 2.0 / (4 * polyvals[0])
56        poincare_map.append(pmap)
57        peaks_all.append(peaks)
58    return poincare_map, peaks_all
59
60
61def set_numba(root_folder, disable_jit):
62    config_file = open(os.path.join(root_folder, '.numba_config.yaml'), 'w')
63    config_file.write('---\n')
64    config_file.write('disable_jit: %d' % int(disable_jit))
65    config_file.close()
66
67def get_filename(run_folder_name, var_str, res_itr, train_seed, noise_val, reg_train_time, **kwargs):
68    if 'test_idx' in kwargs:
69        if 'reg' in kwargs:
70            filename = os.path.join(run_folder_name, '%s_res%d_train%d_test%d_noise%e_reg%e_regtrain%d.csv' % (
71                var_str, res_itr, train_seed, kwargs['test_idx'], noise_val, kwargs['reg'], reg_train_time))
72        else:
73            filename = os.path.join(run_folder_name, '%s_res%d_train%d_test%d_noise%e_regtrain%d.csv' % (
74                var_str, res_itr, train_seed, kwargs['test_idx'], noise_val, reg_train_time))
75    else:
76        filename = os.path.join(run_folder_name, '%s_res%d_train%d_noise%e_regtrain%d.csv' % (
77            var_str, res_itr, train_seed, noise_val, reg_train_time))
78    if 'just_file' in kwargs:
79        if isinstance(kwargs['just_file'], bool):
80            if kwargs['just_file']:
81                return os.path.basename(filename)
82            else:
83                return filename
84        else:
85            raise TypeError()
86    else:
87        return filename
def get_windows_path(path_base):
 8def get_windows_path(path_base):
 9    path = path_base.replace('/', '\\')
10    path = u"\\\\?\\" + path
11    return path
@jit(nopython=True, fastmath=True)
def poincare_max(traj, idxs=array([1], dtype=int32)):
14@jit(nopython=True, fastmath=True)
15def poincare_max(traj, idxs=np.empty(1, dtype=np.intc)):
16    if idxs.size == 0:
17        idxs = np.arange(traj.shape[0])
18    poincare_map = []
19    for j in idxs:
20        with objmode(peaks='int64[:]'):
21            peaks, tmp = find_peaks(traj[j])
22        pmap = np.zeros(peaks.size)
23        for i, peak in enumerate(peaks):
24            with objmode(polyvals='double[:]'):
25                polyvals = np.polyfit(np.arange(3), traj[j, peak - 1:peak + 2], 2)
26            if polyvals[0] == 0:
27                if polyvals[1] <= 0:
28                    pmap[i] = polyvals[2]
29                else:
30                    pmap[i] = polyvals[2] + polyvals[1] * 2
31            else:
32                pmap[i] = polyvals[2] - polyvals[1] ** 2.0 / (4 * polyvals[0])
33        poincare_map.append(pmap)
34    return poincare_map
@jit(nopython=True, fastmath=True)
def poincare_max_peaks(traj, idxs=array([0], dtype=int32)):
37@jit(nopython=True, fastmath=True)
38def poincare_max_peaks(traj, idxs=np.empty(1, dtype=np.intc)):
39    if idxs.size == 0:
40        idxs = np.arange(traj.shape[0])
41    poincare_map = []
42    peaks_all = []
43    for j in idxs:
44        with objmode(peaks='int64[:]'):
45            peaks, tmp = find_peaks(traj[j])
46        pmap = np.zeros(peaks.size)
47        for i, peak in enumerate(peaks):
48            with objmode(polyvals='double[:]'):
49                polyvals = np.polyfit(np.arange(3), traj[j, peak - 1:peak + 2], 2)
50            if polyvals[0] == 0:
51                if polyvals[1] <= 0:
52                    pmap[i] = polyvals[2]
53                else:
54                    pmap[i] = polyvals[2] + polyvals[1] * 2
55            else:
56                pmap[i] = polyvals[2] - polyvals[1] ** 2.0 / (4 * polyvals[0])
57        poincare_map.append(pmap)
58        peaks_all.append(peaks)
59    return poincare_map, peaks_all
def set_numba(root_folder, disable_jit):
62def set_numba(root_folder, disable_jit):
63    config_file = open(os.path.join(root_folder, '.numba_config.yaml'), 'w')
64    config_file.write('---\n')
65    config_file.write('disable_jit: %d' % int(disable_jit))
66    config_file.close()
def get_filename( run_folder_name, var_str, res_itr, train_seed, noise_val, reg_train_time, **kwargs):
68def get_filename(run_folder_name, var_str, res_itr, train_seed, noise_val, reg_train_time, **kwargs):
69    if 'test_idx' in kwargs:
70        if 'reg' in kwargs:
71            filename = os.path.join(run_folder_name, '%s_res%d_train%d_test%d_noise%e_reg%e_regtrain%d.csv' % (
72                var_str, res_itr, train_seed, kwargs['test_idx'], noise_val, kwargs['reg'], reg_train_time))
73        else:
74            filename = os.path.join(run_folder_name, '%s_res%d_train%d_test%d_noise%e_regtrain%d.csv' % (
75                var_str, res_itr, train_seed, kwargs['test_idx'], noise_val, reg_train_time))
76    else:
77        filename = os.path.join(run_folder_name, '%s_res%d_train%d_noise%e_regtrain%d.csv' % (
78            var_str, res_itr, train_seed, noise_val, reg_train_time))
79    if 'just_file' in kwargs:
80        if isinstance(kwargs['just_file'], bool):
81            if kwargs['just_file']:
82                return os.path.basename(filename)
83            else:
84                return filename
85        else:
86            raise TypeError()
87    else:
88        return filename