コード例 #1
0
    def test_summary(self):
        row = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        summary = row.summary()
        emptysummary = len(summary) == 0

        assert_equal(emptysummary, False)

        want = """Workout Summary - testdata/summarytest.csv
--|Total|-Total----|--Avg--|-Avg-|Avg-|-Avg-|-Max-|-Avg
--|Dist-|-Time-----|-Pace--|-Pwr-|SPM-|-HR--|-HR--|-DPS
--|12743|00:57:35.9|02:15.6|000.0|22.5|000.0|000.0|09.8
W-|07410|00:29:55.0|02:01.1|000.0|25.8|000.0|000.0|09.6
R-|05335|00:27:41.3|02:35.7|000.0|19.0|000.0|000.0|11.4
Workout Details
#-|SDist|-Split-|-SPace-|-Pwr-|SPM-|AvgHR|MaxHR|DPS-
01|02579|10:18.8|02:00.0|000.0|26.7|000.0|0.0|09.4
02|02431|09:46.4|02:00.6|000.0|25.7|000.0|0.0|09.7
03|02400|09:49.8|02:02.9|000.0|25.0|000.0|0.0|09.8
"""

        r = rowingdata.rowingdata(csvfile='testdata/summarytest.csv')

        got = r.allstats()
        assert_equal.__self__.maxDiff = None
        assert_equal(want, got)
コード例 #2
0
    def test_cumcp(self):
        row1 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        row2 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        df = rowingdata.cumcpdata([row1, row2])
        isempty = df.empty

        assert_equal(isempty, False)
コード例 #3
0
    def test_histo(self):
        row1 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        row2 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        power = rowingdata.histodata([row1,row2])
        isempty = len(power)==0

        assert_equals(isempty,False)
コード例 #4
0
    def test_cumcp(self):
        row1 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        row2 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        df = rowingdata.cumcpdata([row1,row2])
        isempty = df.empty

        assert_equals(isempty,False)
コード例 #5
0
    def test_histo(self):
        row1 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        row2 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        power = rowingdata.histodata([row1, row2])
        isempty = len(power) == 0

        assert_equal(isempty, False)
コード例 #6
0
    def test_addition(self):
        row1 = rowingdata.rowingdata(csvfile='testdata/testdata_part1.csv')
        row2 = rowingdata.rowingdata(csvfile='testdata/testdata_part2.csv')
        row = row1 + row2

        len1 = len(row2)
        len2 = len(row1)

        assert_equal(len(row), len1 + len2)
コード例 #7
0
    def test_add_overlap(self):
        row1 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        row2 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')

        row = row1+row2

        len1 = len(row)
        len2 = len(row1)

        assert_equals(len1,len2)
コード例 #8
0
    def test_add_overlap(self):
        row1 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        row2 = rowingdata.rowingdata(csvfile='testdata/testdata.csv')

        row = row1 + row2

        len1 = len(row)
        len2 = len(row1)

        assert_equal(len1, len2)
コード例 #9
0
 def testtcxexport(self):
     csvfile='testdata/Speedcoach2example.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'speedcoach2')
     r=rowingdata.SpeedCoach2Parser(csvfile=csvfile)
     summarystring = r.summary()
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,97)
     tcxfile = 'testdata/testtcx.tcx'
     row.exporttotcx(tcxfile)
     assert_equals(rowingdata.get_file_type(tcxfile),'tcx')
     r2 = rowingdata.TCXParser(tcxfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,97)
コード例 #10
0
 def testtcxexport(self):
     csvfile = 'testdata/Speedcoach2example.csv'
     assert_equal(rowingdata.get_file_type(csvfile), 'speedcoach2')
     r = rowingdata.SpeedCoach2Parser(csvfile=csvfile)
     summarystring = r.summary()
     row = rowingdata.rowingdata(df=r.df)
     assert_equal(row.number_of_rows, 97)
     tcxfile = 'testdata/testtcx.tcx'
     row.exporttotcx(tcxfile)
     assert_equal(rowingdata.get_file_type(tcxfile), 'tcx')
     r2 = rowingdata.TCXParser(tcxfile)
     row = rowingdata.rowingdata(df=r.df)
     assert_equal(row.number_of_rows, 97)
コード例 #11
0
 def testpainsled(self):
     csvfile = 'testdata/PainsledForce.csv'
     row = rowingdata.rowingdata(csvfile=csvfile)
     averageforce_lbs = int(row.df[' AverageDriveForce (lbs)'].mean())
     averageforce_N = int(row.df[' AverageDriveForce (N)'].mean())
     assert_equal(averageforce_N, 398)
     assert_equal(averageforce_lbs, 89)
コード例 #12
0
 def testspeedcoach(self):
     csvfile = 'testdata/EmpowerSpeedCoachForce.csv'
     r = rowingdata.SpeedCoach2Parser(csvfile=csvfile)
     row = rowingdata.rowingdata(df=r.df)
     averageforce_lbs = int(row.df[' AverageDriveForce (lbs)'].mean())
     averageforce_N = int(row.df[' AverageDriveForce (N)'].mean())
     assert_equal(averageforce_N, 263)
     assert_equal(averageforce_lbs, 59)
コード例 #13
0
 def test_getpower(self):
     velo = 4.0
     r = rowingdata.getrower()
     rg = rowingdata.getrigging()
     row = rowingdata.SpeedCoach2Parser('testdata/SpeedCoach2v2.12.csv')
     row = rowingdata.rowingdata(df=row.df)
     result = row.otw_setpower_silent(skiprows=40)
     assert_equals(result,1)
コード例 #14
0
 def test_getpower(self):
     velo = 4.0
     r = rowingdata.getrower()
     rg = rowingdata.getrigging()
     row = rowingdata.SpeedCoach2Parser('testdata/SpeedCoach2v2.12.csv')
     row = rowingdata.rowingdata(df=row.df)
     result = row.otw_setpower_silent(skiprows=40)
     assert_equal(result, 1)
コード例 #15
0
 def test_bearing(self):
     velo = 4.0
     r = rowingdata.getrower()
     rg = rowingdata.getrigging()
     row = rowingdata.SpeedCoach2Parser('testdata/SpeedCoach2v2.12.csv')
     row = rowingdata.rowingdata(df=row.df)
     result = row.add_bearing()
     assert_equals(result,1)
コード例 #16
0
 def test_bearing(self):
     velo = 4.0
     r = rowingdata.getrower()
     rg = rowingdata.getrigging()
     row = rowingdata.SpeedCoach2Parser('testdata/SpeedCoach2v2.12.csv')
     row = rowingdata.rowingdata(df=row.df)
     result = row.add_bearing()
     assert_equal(result, 1)
コード例 #17
0
    def testcurvedata(self):
        file = 'testdata/rp3_curve.csv'
        r = rowingdata.RowPerfectParser(file)
        row = rowingdata.rowingdata(df=r.df)
        df = row.get_instroke_data('curve_data')
        assert_equals(len(df),468)
        cs = row.get_instroke_columns()
        assert_equals(len(cs),1)
        assert_equals(cs[0],'curve_data')

        file = 'testdata/quiske_per_stroke_left.csv'
        r = rowingdata.QuiskeParser(file)
        row = rowingdata.rowingdata(df=r.df)
        df = row.get_instroke_data('oar angle velocity curve')
        assert_equals(len(df),25)
        cs = row.get_instroke_columns()
        assert_equals(len(cs),2)
        assert_equals(cs[0],'boat accelerator curve')
コード例 #18
0
    def test_repair(self):
        row = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        len1 = len(row)

        row.repair()

        len2 = len(row)

        assert_equal(len1, len2)
コード例 #19
0
    def test_repair(self):
        row = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        len1 = len(row)

        row.repair()

        len2 = len(row)

        assert_equals(len1,len2)
コード例 #20
0
    def testcurvedata(self):
        file = 'testdata/rp3_curve.csv'
        r = rowingdata.RowPerfectParser(file)
        row = rowingdata.rowingdata(df=r.df)
        df = row.get_instroke_data('curve_data')
        assert_equal(len(df), 468)
        cs = row.get_instroke_columns()
        assert_equal(len(cs), 1)
        assert_equal(cs[0], 'curve_data')

        file = 'testdata/quiske_per_stroke_left.csv'
        r = rowingdata.QuiskeParser(file)
        row = rowingdata.rowingdata(df=r.df)
        df = row.get_instroke_data('oar angle velocity curve')
        assert_equal(len(df), 25)
        cs = row.get_instroke_columns()
        assert_equal(len(cs), 2)
        assert_equal(cs[0], 'boat accelerator curve')
コード例 #21
0
class TestAddPowerZones:
    row = rowingdata.rowingdata(csvfile='testdata/testdata.csv')

    def test_bearing(self):
        r = rowingdata.getrower()
        rg = rowingdata.getrigging()
        row = rowingdata.SpeedCoach2Parser('testdata/SpeedCoach2v2.12.csv')
        row = rowingdata.rowingdata(df=row.df)
        result = rowingdata.addpowerzones(row.df, 225, [23, 53, 76, 87, 91])
コード例 #22
0
 def testmystery(self):
     csvfile='testdata/mystery.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'mystery')
     r=rowingdata.MysteryParser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,4550)
     totaldist=row.df['cum_dist'].max()
     assert_equals(totaldist,7478)
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(totaltime),2325)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #23
0
 def testergdata(self):
     csvfile='testdata/ergdata_example.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'ergdata')
     r=rowingdata.ErgDataParser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,180)
     totaldist=row.df['cum_dist'].max()
     assert_equals(totaldist,1992)
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(totaltime),520)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #24
0
 def testspeedcoach(self):
     csvfile='testdata/speedcoachexample.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'speedcoach')
     r=rowingdata.speedcoachParser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,476)
     totaldist=row.df['cum_dist'].max()
     assert_equals(totaldist,9520)
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(totaltime,3176.5)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #25
0
 def testergstick(self):
     csvfile='testdata/ergstick.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'ergstick')
     r=rowingdata.ErgStickParser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,2400)
     totaldist=row.df['cum_dist'].max()
     assert_equals(int(totaldist),4959)
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(totaltime),1201)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #26
0
 def testrowpro(self):
     csvfile='testdata/RP_testdata.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'rp')
     r=rowingdata.RowProParser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,988)
     totaldist=row.df['cum_dist'].max()
     assert_equals(totaldist,10000)
     assert_equals(row.rowdatetime,datetime.datetime(2016,3,15,19,49,48,863000,utc))
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(10*totaltime),22653)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #27
0
 def testpainsleddesktop(self):
     csvfile='testdata/painsled_desktop_example.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'painsleddesktop')
     r=rowingdata.painsledDesktopParser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,638)
     totaldist=row.df['cum_dist'].max()
     assert_equals(totaldist,7097)
     assert_equals(row.rowdatetime,datetime.datetime(2016,3,29,17,41,27,93000,utc))
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(totaltime),1802)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #28
0
    def test_plot_otw(self, mock_fig, mock_Fig):
        row = rowingdata.SpeedCoach2Parser(csvfile='testdata/Speedcoach2example.csv')
        row = rowingdata.rowingdata(df=row.df)
        row.plotmeters_otw()

        row.plottime_otw()
        row.plottime_otwpower()
        fig = row.get_timeplot_otw('aap')
        fig = row.get_metersplot_otw('aap')
        fig = row.get_time_otwpower('aap')
        fig = row.get_metersplot_otwpower('aap')
        fig = row.get_timeplot_otwempower('aap')
        fig = row.get_metersplot_otwempower('aap')
コード例 #29
0
 def testrowprointervals(self):
     csvfile='testdata/RP_interval.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'rp')
     r=rowingdata.RowProParser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,1674)
     totaldist=row.df['cum_dist'].max()
     assert_equals(int(totaldist),19026)
     assert_equals(row.rowdatetime,datetime.datetime(2016,1,12,19,23,10,878000,utc))
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(totaltime),4800)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #30
0
 def testspeedcoach2(self):
     csvfile='testdata/Speedcoach2example.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'speedcoach2')
     r=rowingdata.SpeedCoach2Parser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,97)
     totaldist=row.df['cum_dist'].max()
     assert_equals(int(10*totaldist),7516)
     assert_equals(row.rowdatetime,datetime.datetime(2016,7,28,11,35,1,500000,utc))
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(totaltime),170)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #31
0
 def testboatcoach(self):
     csvfile='testdata/boatcoach.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'boatcoach')
     r=rowingdata.BoatCoachParser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,119)
     totaldist=row.df['cum_dist'].max()
     assert_equals(totaldist,499)
     assert_equals(row.rowdatetime,datetime.datetime(2016,11,28,8,37,2,0,utc))
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(totaltime),118)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #32
0
 def testfit(self):
     fitfile='testdata/3x250m.fit'
     assert_equals(rowingdata.get_file_type(fitfile),'fit')
     r=rowingdata.FITParser(fitfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,94)
     totaldist=row.df['cum_dist'].max()
     assert_equals(int(totaldist),750)
     assert_equals(row.rowdatetime,datetime.datetime(2016,7,28,9,35,29,0,utc))
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(10*totaltime),4870)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],False)
コード例 #33
0
 def testspeedcoach2v127(self):
     csvfile='testdata/SpeedCoach2Linkv1.27.csv'
     assert_equals(rowingdata.get_file_type(csvfile),'speedcoach2')
     r=rowingdata.SpeedCoach2Parser(csvfile=csvfile)
     row=rowingdata.rowingdata(df=r.df)
     assert_equals(row.number_of_rows,1408)
     totaldist=row.df['cum_dist'].max()
     assert_equals(totaldist,14344.5)
     assert_equals(row.rowdatetime,datetime.datetime(2016,11,5,9,2,3,200000,utc))
     totaltime=row.df['TimeStamp (sec)'].max()-row.df['TimeStamp (sec)'].min()
     assert_equals(int(10*totaltime),45018)
     checks = row.check_consistency()
     assert_equals(checks['velo_time_distance'],True)
コード例 #34
0
 def test_plot_erg(self,mock_fig, mock_Fig):
     row = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
     row.plotmeters_erg()
     row.plottime_erg()
     fig = row.get_metersplot_erg2('aap')
     fig = row.get_timeplot_erg2('aap')
     fig = row.get_pacehrplot('aap')
     fig = row.get_paceplot('aap')
     fig = row.get_metersplot_erg('aap')
     fig = row.get_timeplot_erg('aap')
     row.plottime_hr()
     row.piechart()
     row.power_piechart()
     fig = row.get_power_piechart('aap')
     fig = row.get_piechart('aap')
コード例 #35
0
 def test_plot_erg(self, mock_fig, mock_Fig):
     row = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
     row.plotmeters_erg()
     row.plottime_erg()
     fig = row.get_metersplot_erg2('aap')
     fig = row.get_timeplot_erg2('aap')
     fig = row.get_pacehrplot('aap')
     fig = row.get_paceplot('aap')
     fig = row.get_metersplot_erg('aap')
     fig = row.get_timeplot_erg('aap')
     row.plottime_hr()
     row.piechart()
     row.power_piechart()
     fig = row.get_power_piechart('aap')
     fig = row.get_piechart('aap')
コード例 #36
0
    def test_write_tcx(self):
        row = rowingdata.rowingdata()
        filename = os.getcwd() + '/test_write.gpx`'

        try:
            row.exporttogpx(filename)
            with open(filename) as f:
                contents = f.read()
        finally:
            # NOTE: To retain the tempfile if the test fails, remove
            # the try-finally clauses
            try:
                os.remove(filename)
            except FileNotFoundError:
                pass
        assert_equal(len(contents), 822)
コード例 #37
0
def main():
    readFile = argv[1]

    try:
        rowerFile = argv[2]
    except IndexError:
        rowerFile = "defaultrower.txt"

    rower = rowingdata.getrower(rowerFile)

    row = rowingdata.rowingdata(readFile, rowtype="Indoor Rower", rower=rower)

    print(row.allstats())

    row.plotmeters_erg()

    print("done " + readFile)
コード例 #38
0
    def test_write_csv(self):
        row = rowingdata.rowingdata(csvfile='testdata/testdata.csv',
                                    absolutetimestamps=False)
        filename = os.getcwd() + '/test_write.csv'

        try:
            row.write_csv(filename)
            with open(filename) as f:
                contents = f.read()
        finally:
            # NOTE: To retain the tempfile if the test fails, remove
            # the try-finally clauses
            try:
                os.remove(filename)
            except FileNotFoundError:
                pass
        assert_equal(True, len(contents) > 30000)
コード例 #39
0
class TestCorrectedRowingData:
    row = rowingdata.rowingdata(csvfile='testdata/correctedpainsled.csv')

    def test_filetype(self):
        assert_equal(rowingdata.get_file_type('testdata/testdata.csv'), 'csv')

    def test_basic_rowingdata(self):
        assert_equal(self.row.rowtype, 'Indoor Rower')
        assert_equal(self.row.dragfactor, 95.8808988764045)
        assert_equal(self.row.number_of_rows, 445)
        assert_equal(self.row.rowdatetime,
                     datetime.datetime(2017, 5, 30, 19, 4, 16, 383211, utc))
        totaldist = self.row.df['cum_dist'].max()
        totaltime = self.row.df['TimeStamp (sec)'].max(
        ) - self.row.df['TimeStamp (sec)'].min()
        totaltime = totaltime + self.row.df.loc[0, ' ElapsedTime (sec)']
        assert_equal(int(totaltime), 1309)
        assert_equal(totaldist, 5000)
        assert_equal(self.row.df[' Cadence (stokes/min)'].mean(),
                     20.339325842696628)
コード例 #40
0
def main():
    readFile = argv[1]

    try:
	rowerFile = argv[2]
    except IndexError:
	rowerFile = "defaultrower.txt"

    rower = rowingdata.getrower(rowerFile)

    row = rowingdata.rowingdata(readFile,rowtype="Indoor Rower",
				    rower=rower)

    print(row.allstats())
	
    row.plotmeters_erg()




    print("done "+readFile)
コード例 #41
0
    def test_getvalues(self):
        row = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        spm = row.getvalues(' Cadence (stokes/min)')

        assert_equals(len(row),len(spm))
コード例 #42
0
 def test_spmfromtimestamp(self):
     row = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
     row.spm_fromtimestamps()
コード例 #43
0
    def test_summary(self):
        row = rowingdata.rowingdata(csvfile='testdata/testdata.csv')
        summary = row.summary()
        emptysummary = len(summary) == 0

        assert_equals(emptysummary,False)
コード例 #44
0
 def test_bearing(self):
     r = rowingdata.getrower()
     rg = rowingdata.getrigging()
     row = rowingdata.SpeedCoach2Parser('testdata/SpeedCoach2v2.12.csv')
     row = rowingdata.rowingdata(df=row.df)
     result = rowingdata.addpowerzones(row.df, 225, [23,53,76,87,91])
コード例 #45
0
def checkfile(f2, verbose=False):
    fileformat = rowingdata.get_file_type(f2)
    summary = 'a'
    notread = 1
    if verbose:
        print(fileformat)

    if len(fileformat) == 3 and fileformat[0] == 'zip':
        with zipfile.ZipFile(f2) as z:
            f = z.extract(z.namelist()[0], path='C:/Downloads')
            fileformat = fileformat[2]
            os.remove(f_to_be_deleted)

    if fileformat == 'unknown':
        return 0

    # handle non-Painsled
    if (fileformat != 'csv'):
        # handle RowPro:
        if (fileformat == 'rp'):
            row = rowingdata.RowProParser(f2)
            # handle TCX
        if (fileformat == 'tcx'):
            row = rowingdata.TCXParser(f2)
            row.write_csv(f2 + 'o.csv')
            row = rowingdata.rowingdata(csvfile=f2 + 'o.csv')
            os.remove(f2 + 'o.csv')
            notread = 0

        # handle Mystery
        if (fileformat == 'mystery'):
            row = rowingdata.MysteryParser(f2)

        # handle Quiske
        if (fileformat == 'quiske'):
            row = rowingdata.QuiskeParser(f2)

        # handle RitmoTime
        if (fileformat == 'ritmotime'):
            row = rowingdata.RitmoTimeParser(f2)
            
        # handle TCX no HR
        if (fileformat == 'tcxnohr'):
            row = rowingdata.TCXParserNoHR(f2)
            row.write_csv(f2 + 'o.csv')
            row = rowingdata.rowingdata(csvfile=f2 + 'o.csv')
            os.remove(f2 + 'o.csv')
            notread = 0

        # handle ErgData
        if (fileformat == 'ergdata'):
            row = rowingdata.ErgDataParser(f2)

        # handle CoxMate
        if (fileformat == 'coxmate'):
            row = rowingdata.CoxMateParser(f2)

        # handle BoatCoachOTW
        if (fileformat == 'boatcoachotw'):
            row = rowingdata.BoatCoachOTWParser(f2)

        # handle BoatCoach
        if (fileformat == 'boatcoach'):
            row = rowingdata.BoatCoachParser(f2)

        # handle painsled desktop
        if (fileformat == 'painsleddesktop'):
            row = rowingdata.painsledDesktopParser(f2)

        # handle speed coach GPS
        if (fileformat == 'speedcoach'):
            row = rowingdata.speedcoachParser(f2)

        # handle speed coach GPS 2
        if (fileformat == 'speedcoach2'):
            row = rowingdata.SpeedCoach2Parser(f2)
            summary = row.allstats()
            v = rowingdata.get_empower_firmware(f2)
            rig = rowingdata.get_empower_rigging(f2)

        if (fileformat == 'rowperfect3'):
            row = rowingdata.RowPerfectParser(f2)

        # handle ErgStick
        if (fileformat == 'ergstick'):
            row = rowingdata.ErgStickParser(f2)

        # handle Kinomap
        if (fileformat == 'kinomap'):
            row = rowingdata.KinoMapParser(f2)

        # handle FIT
        if (fileformat == 'fit'):
            row = rowingdata.FITParser(f2)
            row.write_csv(f2 + 'o.csv')
            row = rowingdata.rowingdata(csvfile=f2 + 'o.csv')
            os.remove(f2 + 'o.csv')
            notread = 0

        # handle Humon
        if (fileformat == 'humon'):
            row = rowingdata.HumonParser(f2)
            row.write_csv(f2 + 'o.csv')
            row = rowingdata.rowingdata(csvfile=f2 + 'o.csv')
            os.remove(f2 + 'o.csv')
            notread = 0


        # handle workout log (no stroke data)
        if (fileformat == 'c2log'):
            return 0

            

        if notread:
            row = rowingdata.rowingdata(df=row.df)

    else:
        row = rowingdata.rowingdata(csvfile=f2)

    nr_of_rows = row.number_of_rows
    distmax = row.df['cum_dist'].max()
    timemax = row.df['TimeStamp (sec)'].max() - row.df['TimeStamp (sec)'].min()
    nrintervals = len(row.df[' lapIdx'].unique())
    mintime = row.df['TimeStamp (sec)'].min()
    maxtime = row.df['TimeStamp (sec)'].max()
    if verbose:
        print(("nr lines", row.number_of_rows))
        print(("data ", row.rowdatetime))
        print(("dist ", distmax))
        print(("Time ", timemax))
        print(("Nr intervals ", nrintervals))
        print(("Min time ",mintime))
        print(("Max time ",maxtime))

    res = row.intervalstats_values()
    int1time = res[0][0]
    int1dist = res[1][0]

    if verbose:
        print(("Interval 1 time ", int1time))
        print(("Interval 1 dist ", int1dist))

    y = row.rowdatetime.year
    m = row.rowdatetime.month
    d = row.rowdatetime.day
    h = row.rowdatetime.hour
    tz = row.rowdatetime.tzname()
    minute = row.rowdatetime.minute
    sec = row.rowdatetime.second

    results = {
        'type': fileformat,
        'nr_lines': nr_of_rows,
        'year': y,
        'month': m,
        'day': d,
        'hour': h,
        'minute': minute,
        'second': sec,
        'dist': int(distmax),
        'seconds': int(timemax),
        'nrintervals': nrintervals,
        'lap 1 time': int(int1time),
        'lap 1 dist': int(int1dist),
        'timezone': tz,
        'summary':summary,
    }

    return results