
# coding: utf-8

# ## CSV Table Writer (Comma-Separated Values format) 
# This allows for your data to be opened in 
# spreadsheet software like Open-Office, Google-Sheets, 
# or Excel
# Paul J. Atzberger <br>
# [http://atzberger.org](http://atzberger.org)
# 
# Writes CSV file for table of data.
# 

import numpy as np;
import os;

script_base_name = 'atz_make_csv_table_ex1'; # script name without extension

print("CSV Table Writer.");
print("Paul J. Atzberger");
print("http://atzberger.org");
print("");
print("Writes CSV for table of data.");
print("");

print("Packages:");
print("numpy.__version__ = " + str(np.__version__));
print("script_base_name = " + script_base_name);

base_dir  = './output/%s'%(script_base_name);
if not os.path.exists(base_dir):
  os.makedirs(base_dir);
print("base_dir = " + base_dir);

def make_table_1(values,row_labels,column_labels):
    num_rows = len(row_labels); num_cols = len(column_labels);
    # create the table
    s = "";

    # write row header
    for j in range(0,num_cols):
      if j > 0:
        s += r" , ";
      s += r"%s"%column_labels[j];
      if j == num_cols - 1:
        s+= "\n";

    for i in range(0,num_rows):
      s += r"%s"%row_labels[i];
      for j in range(0,num_cols-1):
        val = values[i,j];
        s += " , %.4e"%val;
        if j == num_cols - 2:
          s += "\n";    

    s += "\n";    
    
    return s;

# --- Make Table:
row_labels = [];
row_labels.append(r'First Run Name');
row_labels.append(r'Another Run Name');

column_labels = [];
column_labels.append(r'Method:');
column_labels.append(r'1000');
column_labels.append(r'2000');
column_labels.append(r'3000');
column_labels.append(r'Final');

num_rows = len(row_labels); num_cols = len(column_labels);
values = np.random.rand(num_rows,num_cols-1);

# -- 
s = make_table_1(values,row_labels,column_labels);
print(s)
print("Write file:");
filename = '%s/test_table_2.csv'%base_dir;
print("filename = " + filename);
fid = open(filename,'w');
fid.write(s);
fid.close();

