Ran update_copyright.py
[hooke.git] / hooke / driver / csvdriver.py
index 1d05e232532eb67c9ecb1528dffa98f28550d179..3ec4cbe054abe49178b273249a20a8c4e9d2a7e6 100644 (file)
@@ -1,71 +1,93 @@
-'''
-csvdriver.py
-
-Simple driver to read general comma-separated values in Hooke
+# Copyright (C) 2008-2010 Massimo Sandal <devicerandom@gmail.com>
+#                         W. Trevor King <wking@drexel.edu>
+#
+# This file is part of Hooke.
+#
+# Hooke is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# Hooke is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
+# Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with Hooke.  If not, see
+# <http://www.gnu.org/licenses/>.
+
+"""Simple driver to read general comma-separated values in Hooke
 
 Columns are read this way:
 
 X1 , Y1 , X2 , Y2 , X3 , Y3 ...
 
 If the number of columns is odd, the last column is ignored.
+"""
 
-(c)Massimo Sandal, 2008
-'''
-
-from .. import libhookecurve as lhc
-from .. import libhooke as lh
 import csv
-
-class csvdriverDriver(lhc.Driver):
-
-        def __init__(self, filename):
-
-            self.filedata = open(filename,'r')
-            self.data = list(self.filedata)
-            self.filedata.close()
-
-            self.filetype = 'generic'
-            self.experiment = ''
-
-            self.filename=filename
-
-        def is_me(self):
-            myfile=file(self.filename)
-            headerline=myfile.readlines()[0]
-            myfile.close()
-
-            #using a custom header makes things much easier...
-            #(looking for raw CSV data is at strong risk of confusion)
-            if headerline[:-1]=='Hooke data':
-                return True
-            else:
-                return False
-
-        def close_all(self):
-            self.filedata.close()
-
-        def default_plots(self):
-            rrows=csv.reader(self.data)
-            rows=list(rrows) #transform the csv.reader iterator in a normal list
-            columns=lh.transposed2(rows[1:])
-
-            main_plot=lhc.PlotObject()
-            main_plot.vectors=[]
-
-            for index in range(0,len(columns),2):
-                main_plot.vectors.append([])
-                temp_x=columns[index]
-                temp_y=columns[index+1]
-
-                #convert to float (the csv gives strings)
-                temp_x=[float(item) for item in temp_x]
-                temp_y=[float(item) for item in temp_y]
-
-                main_plot.vectors[-1].append(temp_x)
-                main_plot.vectors[-1].append(temp_y)
-
-            main_plot.units=['x','y']
-            main_plot.title=self.filename
-            main_plot.destination=0
-
-            return [main_plot]
+import os.path
+
+import lib.curve
+import lib.driver
+import lib.libhooke
+import lib.plot
+
+class csvdriverDriver(lib.driver.Driver):
+
+    def __init__(self, filename):
+
+        self.filedata = open(filename,'r')
+        self.data = list(self.filedata)
+        self.filedata.close()
+
+        self.filetype = 'generic'
+        self.experiment = ''
+
+        self.filename=filename
+
+    def close_all(self):
+        self.filedata.close()
+
+    def default_plots(self):
+        rrows=csv.reader(self.data)
+        rows=list(rrows) #transform the csv.reader iterator into a normal list
+        columns=lib.libhooke.transposed2(rows[1:])
+
+        for index in range(0, len(columns), 2):
+            temp_x=columns[index]
+            temp_y=columns[index+1]
+            #convert to float (the csv gives strings)
+            temp_x=[float(item) for item in temp_x]
+            temp_y=[float(item) for item in temp_y]
+
+            curve = lib.curve.Curve()
+
+            curve.destination.row = index + 1
+            curve.label = 'curve ' + str(index)
+            curve.style = 'plot'
+            curve.units.x = 'x'
+            curve.units.y = 'y'
+            curve.x = temp_x
+            curve.y = temp_y
+
+            plot = lib.plot.Plot()
+            plot.title = os.path.basename(self.filename)
+            plot.curves.append(curve)
+
+        #TODO: is normalization helpful or detrimental here?
+        #plot.normalize()
+        return plot
+
+    def is_me(self):
+        myfile=file(self.filename)
+        headerline=myfile.readlines()[0]
+        myfile.close()
+
+        #using a custom header makes things much easier...
+        #(looking for raw CSV data is at strong risk of confusion)
+        if headerline[:-1]=='Hooke data':
+            return True
+        else:
+            return False