Пример #1
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)
Пример #2
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)
Пример #3
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)

        if (fileformat == 'eth'):
            row = rowingdata.ETHParser(f2)

        if (fileformat == 'hero'):
            row = rowingdata.HeroParser(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 nklinklogbook
        if (fileformat == 'nklinklogbook'):
            row = rowingdata.NKLiNKLogbookParser(f2)
            row.write_csv(f2 + 'o.csv')
            row = rowingdata.rowingdata(csvfile=f2 + 'o.csv')
            os.remove(f2 + 'o.csv')
            notread = 0

        # handle smartrow
        if (fileformat == 'smartrow'):
            row = rowingdata.SmartRowParser(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