def simpleVarveModel(signal, H, shape=1.5, mean=1, SNR=.25, seed=0): ''' Simple PSM for varves Args: signal (array): the signal matrix, each row is a time series H (float): Hurst index, should be in (0, 1) ''' # first, gammify the input gamSig = gammify(signal, shape=shape, mean=mean, seed=seed) # create gammafied autocorrelated fractal brownian motion series # wa = Spectral.WaveletAnalysis() # fBm_ts = wa.fBMsim(N=np.size(signal), H=H) fBm_ts = fbm.fgn(np.size(signal), H) gamNoise = gammify(fBm_ts, shape=shape, mean=mean, seed=seed) # combine the signal with the noise, based on the SNR varves = (gamSig * SNR + gamNoise * (1 / SNR)) / (SNR + 1 / SNR) res = { 'signal': signal, 'gamSig': gamSig, 'fBm_ts': fBm_ts, 'gamNoise': gamNoise, 'varves': varves, 'H': H, 'shape': shape, 'mean': mean, 'SNR': SNR, 'seed': seed, } return res
def test_fgn(n_good, hurst_good, length_good, fbm_method_good): fgn_sample = fgn(n_good, hurst_good, length_good, fbm_method_good) assert isinstance(fgn_sample, np.ndarray) assert len(fgn_sample) == n_good
Serie = fbm(n=Size, hurst=H) a[seed],S[seed],_,O[seed] = evaluate_omega(Serie,1) ax[0].plot(a,S,'o',mec='k',mfc='r',markersize=5,label=r'fBm',alpha=1)#,markersize=10,mfc='w',mec='r',mew=2,label=r'$\beta x$ Map',alpha=0.8) ax[1].plot(a,O,'o',mec='k',mfc='r',markersize=5,alpha=1)#,markersize=10,mfc='w',mec='r',mew=2,label=r'$\beta x$ Map',alpha=0.8) print('=>-------- 20%') a = np.zeros(CI) S = np.zeros(CI) O = np.zeros(CI) for seed in range(CI): np.random.seed(seed) H = 0.6*seed/CI + 0.2 Serie = fgn(n=Size, hurst=H) a[seed],S[seed],_,O[seed] = evaluate_omega(Serie,1) ax[0].plot(a,S,'s',mec='k',mfc='g',markersize=5,label=r'fGn',alpha=1)#,markersize=10,mfc='w',mec='r',mew=2,label=r'$\beta x$ Map',alpha=0.8) ax[1].plot(a,O,'s',mec='k',mfc='g',markersize=5,alpha=1)#,markersize=10,mfc='w',mec='r',mew=2,label=r'$\beta x$ Map',alpha=0.8) print('==>------- 30%') #Cauchy noise a = np.zeros(CI) S = np.zeros(CI) O = np.zeros(CI) for seed in range(CI):
from fbm import fbm, fgn import numpy as np import csv n_series = 100 n_size = 50000 fbm_matrix = [] fgn_matrix = [] for i in range(n_series): fbm_sample = fbm(n=n_size, hurst=0.1, length=1, method='daviesharte') fgn_sample = fgn(n=n_size, hurst=0.5, length=1, method='daviesharte') fbm_matrix.append(fbm_sample) fgn_matrix.append(fgn_sample) print(i) with open("../Data/fBm.csv", "w+") as my_csv: csvWriter = csv.writer(my_csv, delimiter=',') csvWriter.writerows(fbm_matrix) with open("../Data/fGn.csv", "w+") as my_csv: csvWriter = csv.writer(my_csv, delimiter=',') csvWriter.writerows(fgn_matrix)