diff --git a/dartwrf/create_wbubble_wrfinput.py b/dartwrf/create_wbubble_wrfinput.py
index 69ca8a0345792f027544b13bbe8e7ae4ebedb7aa..5aed424644d76387bda65013cc71bb02edeaedfd 100644
--- a/dartwrf/create_wbubble_wrfinput.py
+++ b/dartwrf/create_wbubble_wrfinput.py
@@ -11,78 +11,79 @@ dx_km = 2
 cr = 15  # km horizontal relaxation distance
 cz = 2000  # meters vertical relaxation distance
 
-args = sys.argv[1:]
+if __name__ == "__main__":
+    args = sys.argv[1:]
 
-if 'plot' in args:
-    import matplotlib.pyplot as plt
-    fig, ax = plt.subplots(figsize=(5,5))
+    if 'plot' in args:
+        import matplotlib.pyplot as plt
+        fig, ax = plt.subplots(figsize=(5,5))
 
-perturbations = True if 'perturb' in args else False
-print('update state in wrfinput  wrfout file to DART background file')
-print('perturb wbubble = ', perturbations)
+    perturbations = True if 'perturb' in args else False
+    print('update state in wrfinput  wrfout file to DART background file')
+    print('perturb wbubble = ', perturbations)
 
 
-for iens in range(1, exp.n_ens+1):
-    print('iens', iens)
-    wrfin = cluster.wrf_rundir(iens)+'/wrfinput_d01'
+    for iens in range(1, exp.n_ens+1):
+        print('iens', iens)
+        wrfin = cluster.wrf_rundir(iens)+'/wrfinput_d01'
 
-    # insert wbubble
-    with nc.Dataset(wrfin, 'r+') as ds:
-        t = ds.variables['T'][:]
-        nt, nz, ny, nx = t.shape
-        z = ds.variables['PHB'][0,:,100,100]/9.81
-        z = np.array(z)
-        z = z - z[0]
-        z = (z[1:]+z[:-1])/2
-        z = z[:, np.newaxis, np.newaxis]
+        # insert wbubble
+        with nc.Dataset(wrfin, 'r+') as ds:
+            t = ds.variables['T'][:]
+            nt, nz, ny, nx = t.shape
+            z = ds.variables['PHB'][0,:,100,100]/9.81
+            z = np.array(z)
+            z = z - z[0]
+            z = (z[1:]+z[:-1])/2
+            z = z[:, np.newaxis, np.newaxis]
 
-        if perturbations:
-            cx = (70 + 60*np.random.rand())*dx_km
-            cy = (70 + 60*np.random.rand())*dx_km
-        else:
-            cx = 100*dx_km
-            cy = 100*dx_km
-        print('wbubble center is', cx, cy)
-        x = np.arange(0,nx)*dx_km
-        y = np.arange(0,ny)*dx_km
-        dx = x-cx
-        dy = y-cy
-        xx, yy = np.meshgrid(dx, dy)
-        dr = np.sqrt(xx**2 + yy**2)[np.newaxis, :, :]
+            if perturbations:
+                cx = (70 + 60*np.random.rand())*dx_km
+                cy = (70 + 60*np.random.rand())*dx_km
+            else:
+                cx = 100*dx_km
+                cy = 100*dx_km
+            print('wbubble center is', cx, cy)
+            x = np.arange(0,nx)*dx_km
+            y = np.arange(0,ny)*dx_km
+            dx = x-cx
+            dy = y-cy
+            xx, yy = np.meshgrid(dx, dy)
+            dr = np.sqrt(xx**2 + yy**2)[np.newaxis, :, :]
 
-        amplitude = 3 
-        if perturbations:
-            amplitude += np.random.rand()*2 - 1  # Uniformly random +/- 1 K
-        increment = amplitude*np.exp(-(dr/cr)**2)*np.exp(-(z/cz)**2)
+            amplitude = 3 
+            if perturbations:
+                amplitude += np.random.rand()*2 - 1  # Uniformly random +/- 1 K
+            increment = amplitude*np.exp(-(dr/cr)**2)*np.exp(-(z/cz)**2)
 
-        # now perturbations are centered in domain
-        # to shift it in direction NW
-        shift = 50
-        incr2 = increment.copy()*0.
-        incr2[:, :-shift, :-shift] = increment[:, shift:, shift:]  # main area
-        incr2[:, -shift:, :-shift] = increment[:, :shift, shift:]  # lower part
-        incr2[:, :-shift, -shift:] = increment[:, shift:, :shift]  # right part
-        incr2[:, -shift:, -shift:] = increment[:, :shift, :shift]  # bottom right corner
+            # now perturbations are centered in domain
+            # to shift it in direction NW
+            shift = 50
+            incr2 = increment.copy()*0.
+            incr2[:, :-shift, :-shift] = increment[:, shift:, shift:]  # main area
+            incr2[:, -shift:, :-shift] = increment[:, :shift, shift:]  # lower part
+            incr2[:, :-shift, -shift:] = increment[:, shift:, :shift]  # right part
+            incr2[:, -shift:, -shift:] = increment[:, :shift, :shift]  # bottom right corner
 
-        if 'plot' in args:
-            pdata = incr2[0,:,:]  # select lowest level
-            pdata = pdata - pdata.min()  
-            c = next(ax._get_lines.prop_cycler)['color']
-            ax.contour(pdata, levels=[2.,], linewidths=1, colors=[c], zorder=3)
-            ax.contour(pdata, levels=[1.,], linewidths=0.5, colors=[c], zorder=3)
-    
-        ds.variables['T'][0,...] += incr2
-        ds.variables['THM'][0,...] += incr2
-    print(wrfin, 'wbubble inserted.')
+            if 'plot' in args:
+                pdata = incr2[0,:,:]  # select lowest level
+                pdata = pdata - pdata.min()  
+                c = next(ax._get_lines.prop_cycler)['color']
+                ax.contour(pdata, levels=[2.,], linewidths=1, colors=[c], zorder=3)
+                ax.contour(pdata, levels=[1.,], linewidths=0.5, colors=[c], zorder=3)
+        
+            ds.variables['T'][0,...] += incr2
+            ds.variables['THM'][0,...] += incr2
+        print(wrfin, 'wbubble inserted.')
 
-if 'plot' in args:
-    ax.set_aspect(1)
-    ax.plot([], [], color='k', lw=1, label='+2 K perturbation')
-    ax.plot([], [], color='k', lw=0.5, label='+1 K perturbation')
-    ax.legend()
-    
-    fout = '/home/fs71386/lkugler/data/analysis/'+exp.expname+'/shiftedbubbles.png'
-    os.makedirs(os.path.dirname(fout), exist_ok=True)
-    fig.savefig(fout, dpi=200) 
-    print(fout, 'saved.')
+    if 'plot' in args:
+        ax.set_aspect(1)
+        ax.plot([], [], color='k', lw=1, label='+2 K perturbation')
+        ax.plot([], [], color='k', lw=0.5, label='+1 K perturbation')
+        ax.legend()
+        
+        fout = '/home/fs71386/lkugler/data/analysis/'+exp.expname+'/shiftedbubbles.png'
+        os.makedirs(os.path.dirname(fout), exist_ok=True)
+        fig.savefig(fout, dpi=200) 
+        print(fout, 'saved.')
 
diff --git a/dartwrf/link_dart_rttov.py b/dartwrf/link_dart_rttov.py
index a13395624e00e8d7adb7edb67f001fb3703da061..53483a93723e9804c99d4f2fe3f24b20135964b3 100644
--- a/dartwrf/link_dart_rttov.py
+++ b/dartwrf/link_dart_rttov.py
@@ -5,34 +5,36 @@ from utils import symlink, copy_scp_srvx8, copy, sed_inplace
 
 joinp = os.path.join
 
-# DART executables
-bins = ['perfect_model_obs', 'filter', 'obs_diag', 'obs_seq_to_netcdf']
-for b in bins:
-    symlink(joinp(cluster.dart_srcdir, b),
-            joinp(cluster.dartrundir, b))
-    print(joinp(cluster.dartrundir, b), 'created')
+if __name__ == "__main__":
 
-rttov_files = ['rttov13pred54L/rtcoef_msg_4_seviri_o3.dat', 
-               #'mfasis_lut/rttov_mfasis_cld_msg_4_seviri_deff.dat',
-               'mfasis_lut/rttov_mfasis_cld_msg_4_seviri_deff.H5',
-               'cldaer_visir/sccldcoef_msg_4_seviri.dat']
+        # DART executables
+        bins = ['perfect_model_obs', 'filter', 'obs_diag', 'obs_seq_to_netcdf']
+        for b in bins:
+        symlink(joinp(cluster.dart_srcdir, b),
+                joinp(cluster.dartrundir, b))
+        print(joinp(cluster.dartrundir, b), 'created')
 
-for f_src in rttov_files:
-    destname = os.path.basename(f_src)
-    if 'rtcoef' in f_src:
-        destname = 'rtcoef_msg_4_seviri.dat'
+        rttov_files = ['rttov13pred54L/rtcoef_msg_4_seviri_o3.dat', 
+                #'mfasis_lut/rttov_mfasis_cld_msg_4_seviri_deff.dat',
+                'mfasis_lut/rttov_mfasis_cld_msg_4_seviri_deff.H5',
+                'cldaer_visir/sccldcoef_msg_4_seviri.dat']
 
-    symlink(cluster.rttov_srcdir + f_src, 
-            cluster.dartrundir+'/'+destname)
+        for f_src in rttov_files:
+        destname = os.path.basename(f_src)
+        if 'rtcoef' in f_src:
+                destname = 'rtcoef_msg_4_seviri.dat'
 
-##################
-symlink(cluster.dartrundir+'/rttov_mfasis_cld_msg_4_seviri_deff.H5', 
-        cluster.dartrundir+'/rttov_mfasis_cld_msg_4_seviri.H5')
+        symlink(cluster.rttov_srcdir + f_src, 
+                cluster.dartrundir+'/'+destname)
 
-symlink(cluster.dart_srcdir+'/../../../observations/forward_operators/rttov_sensor_db.csv',
-        cluster.dartrundir+'/rttov_sensor_db.csv')
+        ##################
+        symlink(cluster.dartrundir+'/rttov_mfasis_cld_msg_4_seviri_deff.H5', 
+                cluster.dartrundir+'/rttov_mfasis_cld_msg_4_seviri.H5')
 
-symlink(cluster.dart_srcdir+'/../../../assimilation_code/programs/gen_sampling_err_table/work/sampling_error_correction_table.nc',
-        cluster.dartrundir+'/sampling_error_correction_table.nc')
+        symlink(cluster.dart_srcdir+'/../../../observations/forward_operators/rttov_sensor_db.csv',
+                cluster.dartrundir+'/rttov_sensor_db.csv')
 
-print('prepared DART & RTTOV links in', cluster.dartrundir)
+        symlink(cluster.dart_srcdir+'/../../../assimilation_code/programs/gen_sampling_err_table/work/sampling_error_correction_table.nc',
+                cluster.dartrundir+'/sampling_error_correction_table.nc')
+
+        print('prepared DART & RTTOV links in', cluster.dartrundir)