@@ -0,0 +1,1788 @@
+import pandas as pd%0Aimport numpy as np%0A%0A%0Aclass ODTFile(object):%0A    def __init__(self, odt_filename):%0A        f = open(odt_filename)%0A        lines = f.readlines()%0A        f.close()%0A        %0A        for i in range(len(lines)):%0A            if lines%5Bi%5D.startswith('# Columns:'):%0A                columns_line = i%0A                line = lines%5Bi%5D%0A                parts = line.split('Oxs_')%5B1:%5D%0A                self.header = %5B%5D%0A                for part in parts:%0A                    tmp_string = part%0A                    tmp_string = tmp_string.replace('%7B', '')%0A                    tmp_string = tmp_string.replace('%7D', '')%0A                    tmp_string = tmp_string.replace('RungeKuttaEvolve:evolver:', '')%0A                    tmp_string = tmp_string.replace('TimeDriver::', '')%0A                    tmp_string = tmp_string.replace('FixedZeeman:fixedzeeman:', '')%0A                    tmp_string = tmp_string.replace('TimeDriver', '')%0A                    tmp_string = tmp_string.replace('Uniform', '')%0A                    tmp_string = tmp_string.replace(' ', '')%0A                    tmp_string = tmp_string.replace('::', '')%0A                    tmp_string = tmp_string.replace('%5Cn', '')%0A                    tmp_string = tmp_string.replace('CGEvolve:evolver:', '')%0A                    self.header.append(tmp_string)%0A        %0A        self.data = %5B%5D%0A        for i in range(columns_line, len(lines)):%0A            line = lines%5Bi%5D%0A            if line%5B0%5D != '#':%0A                data_line = %5B%5D%0A                numbers = line.split()%0A                for number in numbers:%0A                    data_line.append(float(number))%0A                self.data.append(data_line)%0A%0A        self.df = pd.DataFrame(self.data, columns=self.header)%0A%0A    def last_row(self):%0A        return self.df.loc%5Bself.df.index%5B-1%5D%5D%0A

Add ODTFile class.