diff --git a/dartwrf/obsseq_2dim.py b/dartwrf/obsseq_2dim.py
index 966d709c963f6801689128544c995d17c6280303..f32b8ec99c901c24b0dc371422ee460189aebcd6 100755
--- a/dartwrf/obsseq_2dim.py
+++ b/dartwrf/obsseq_2dim.py
@@ -1,5 +1,9 @@
 """Create obs_seq.out files with collapsed vertical dimension
 Specifically, one observation per column which is the maximum of the column
+
+Use this script before running the OSSE workflow, to prepare obs_seq.out files.
+
+path_3d_obsseq = '/path/exp_obs10_loc20/obs_seq_out/2008-07-30_%H:%M_obs_seq.out'  
 """
 
 from copy import copy
@@ -8,35 +12,41 @@ import time as time_module
 import datetime as dt
 import numpy as np
 
-from config.cfg import exp
 from config.cluster import cluster
+from dartwrf import utils
 from dartwrf import assim_synth_obs as aso
 from dartwrf import obsseq
 
 
 if __name__ == "__main__":
-
-     assim_time = dt.datetime.strptime(sys.argv[1], "%Y-%m-%d_%H:%M")
-
-    # prepare an obsseq without rejected observations
-     if exp.use_existing_obsseq:  # from another exp
-          oso_input = assim_time.strftime(exp.use_existing_obsseq)
+     
+     exp = sys.argv[1]
+     assim_time = dt.datetime.strptime(sys.argv[2], "%Y-%m-%d_%H:%M")
+     
+     path_3d_obsseq = cluster.archive_base+exp+'/obs_seq_out/%Y-%m-%d_%H:%M_obs_seq.out'
+     oso_input = assim_time.strftime(path_3d_obsseq)
+     
+     # load experiment config
+     sys.path.insert(0, cluster.archivedir+'/'+exp+'/DART-WRF')
+     from config import cfg
 
      # only assured to work with single obstype
-     if len(exp.observations) > 1:
+     if len(cfg.exp.observations) > 1:
           raise NotImplementedError()
-     n_obs = exp.observations[0]['n_obs']
 
      # existing obsseq with multi levels
      oso = obsseq.ObsSeq(oso_input)
 
+     n_obs = cfg.exp.observations[0]['n_obs']
      nlev = len(oso.df)/n_obs
      if nlev - int(nlev) != 0:
           raise RuntimeError()
      nlev = int(nlev)  # levels per obs
+     print('nlev', nlev)
+     print('n_obs', n_obs)
      
-     # copy will be modified
-     output = copy(oso)
+     output = copy(oso)  # copy will be modified
+     # output.df = output.df.copy()  # without this, we get a SettingWithCopyWarning
      output.df = output.df.iloc[0::nlev]  #  every nth level = first level
 
      #print(output.df, oso.df)
@@ -50,8 +60,9 @@ if __name__ == "__main__":
           output.df.loc[i_obs_subset, ('observations')] = float(column['observations'].max())
           output.df.loc[i_obs_subset, ('truth')] = float(column['truth'].max())
 
-     print(output.df) #, 'observations'], output.df.loc[i_obs, 'observations'])
+     print(output.df)
 
      fout = cluster.archivedir + assim_time.strftime("/obs_seq_out/%Y-%m-%d_%H:%M_obs_seq.out")
      os.makedirs(cluster.archivedir+'/obs_seq_out', exist_ok=True)
      output.to_dart(fout)
+     utils.write_txt(["created from", oso_input,], fout[:-3]+'.txt')