diff --git a/codes/run.py b/codes/run.py
new file mode 100644
index 0000000000000000000000000000000000000000..0237477a5207d035e4aaf18d69ee67601a23b1d3
--- /dev/null
+++ b/codes/run.py
@@ -0,0 +1,58 @@
+import os
+import sys
+import ase.io
+import numpy as np
+from ase import Atoms, Atom
+from ase.io import Trajectory
+from sklearn.metrics import mean_squared_error
+from dscribe.descriptors import SOAP
+from scipy.interpolate import UnivariateSpline
+from sklearn.gaussian_process import GaussianProcessRegressor
+from sklearn.gaussian_process.kernels import RBF
+from sklearn.model_selection import train_test_split, learning_curve, validation_curve, GridSearchCV
+from joblib import Parallel, delayed
+from ase import neighborlist 
+from sklearn.preprocessing import StandardScaler
+from create_descriptor import *
+from tool import *
+from zopt import *
+
+if __name__ == '__main__':
+    #debut de l initialisation
+    E = -808.18103420 #slab without O
+    mu = -9.85391418/2  #O2 sur 2
+    atomseul='H' #atome deposé
+    traj='data/final.traj' 
+    data_folder='data'
+    poscar_file='POSCAR' #slab with no adsorbate
+    os.chdir('/home/boulang31/Documents/codes/zopt')
+    train_pos_indices=[1,25,36]
+    atoms_train,y_train,species=get_train_data(traj,data_folder,train_pos_indices)
+    xx,yy,zz=pos_to_relax(poscar_file)
+    print(zz)
+    params={'species':species,'l_max':2,'n_max':2,'r_cut':7}
+    desc=create_descriptor(method='soap',params=params,ats=0)
+    X_train=desc.create(atoms_train,load=True,save_file=data_folder)
+
+    y_mean=np.mean(y_train)
+    y_train=y_train-y_mean
+    scaler=StandardScaler()
+    X_train=scaler.fit_transform(X_train)  
+
+    #machine
+    kernel=1**2 * RBF(length_scale=200,length_scale_bounds=(1/np.sqrt(2*1e-0),1/np.sqrt(2*1e-8)))
+    GP = GaussianProcessRegressor(kernel=kernel)
+    title='GP'
+    parameters = {'alpha':[1e-3,]}
+    g_search = GridSearchCV(GP, parameters)
+    g_search.fit(X_train, y_train)
+    print('best estimator',g_search.best_estimator_.kernel_)
+    np.save('GP_alpha.npy',g_search.best_estimator_.alpha_)
+    #recherche mini
+    #for i in range(len(xx)):
+    #    x_soap,zetap,ind,zlim=searchEminzgrid(x=xx[i],y=yy[i],ind=i,z=17,posDFT=posDFT,atomseul='O')  
+    #    x_soap=scaler.transform(x_soap)          
+    #    Eprd,Estd=g_search.best_estimator_.predict(x_soap,return_std=True)
+    #    pos_reduc(np.array(zetap),Eprd,Estd,ind,zlim,xx[i],yy[i])
+          
+    Parallel(n_jobs=10)(delayed(run_para)([xx[i],yy[i],zz[i]],i,desc,scaler,g_search) for i in range(len(xx)))
\ No newline at end of file