Пример #1
0
    def test_extract(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=5,
                                base_year=1870)
        wdmtoolbox.csvtowdm(self.wdmname, 101,
                            input_ts='tests/sunspot_area.csv')
        ret1 = wdmtoolbox.extract(self.wdmname, 101).astype('f')
        ret2 = wdmtoolbox.extract('{0},101'.format(self.wdmname)).astype('f')
        assert_frame_equal(ret1, ret2)

        ret3 = tstoolbox.read('tests/sunspot_area.csv').astype('f')
        ret1.columns = ['Area']
        assert_frame_equal(ret1, ret3)

        ret4 = tstoolbox.read('tests/sunspot_area_with_missing.csv',
                              dropna='no').astype('f')

        wdmtoolbox.createnewdsn(self.wdmname,
                                500,
                                tcode=5,
                                base_year=1870)
        wdmtoolbox.csvtowdm(self.wdmname,
                            500,
                            input_ts='tests/sunspot_area_with_missing.csv')
        ret5 = wdmtoolbox.extract(self.wdmname, 500).astype('f')
        ret5.columns = ['Area']
        assert_frame_equal(ret5, ret4)
Пример #2
0
    def test_tstep(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2, base_year=1970, tsstep=15)
        wdmtoolbox.csvtowdm(self.wdmname, 101, input_ts="tests/nwisiv_02246000.csv")
        ret1 = wdmtoolbox.extract(self.wdmname, 101)
        ret2 = wdmtoolbox.extract("{0},101".format(self.wdmname))
        assert_frame_equal(ret1, ret2, check_index_type=False)

        ret3 = tstoolbox.read("tests/nwisiv_02246000.csv").astype("float64")
        ret3.index = ret3.index.tz_localize(None)
        ret1.columns = ["02246000_iv_00060"]
        assert_frame_equal(ret1, ret3, check_index_type=False)
Пример #3
0
    def test_tstep(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2,
                                base_year=1970, tsstep=15)
        wdmtoolbox.csvtowdm(self.wdmname, 101,
                            input_ts='tests/nwisiv_02246000.csv')
        ret1 = wdmtoolbox.extract(self.wdmname, 101)
        ret2 = wdmtoolbox.extract('{0},101'.format(self.wdmname))
        assert_frame_equal(ret1, ret2)

        ret3 = tstoolbox.read('tests/nwisiv_02246000.csv').astype('float64')
        ret1.columns = ['02246000_iv_00060']
        assert_frame_equal(ret1, ret3)
Пример #4
0
    def test_copy_to_self(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2,
                                base_year=1970, tsstep=15)
        wdmtoolbox.csvtowdm(self.wdmname, 101,
                            input_ts='tests/nwisiv_02246000.csv')
        ret1 = wdmtoolbox.extract(self.wdmname, 101)
        ret2 = wdmtoolbox.extract('{0},101'.format(self.wdmname))
        assert_frame_equal(ret1, ret2)

        ret3 = tstoolbox.read('tests/nwisiv_02246000.csv').astype('float64')
        ret1.columns = ['02246000_iv_00060']
        assert_frame_equal(ret1, ret3)

        wdmtoolbox.copydsn(self.wdmname, 101, self.wdmname, 1101)
Пример #5
0
 def test_out_of_bounds_dsn(self):
     wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
     wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2, base_year=1970, tsstep=15)
     wdmtoolbox.csvtowdm(self.wdmname, 101, input_ts="tests/nwisiv_02246000.csv")
     with self.assertRaisesRegex(
         WDMError, "WDM error: data set number out of valid range"
     ):
         ret1 = wdmtoolbox.extract(self.wdmname, 32001)
Пример #6
0
 def test_dsn_not_in_wdm(self):
     wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
     wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2,
                             base_year=1970, tsstep=15)
     wdmtoolbox.csvtowdm(self.wdmname, 101,
                         input_ts='tests/nwisiv_02246000.csv')
     with assertRaisesRegexp(WDMError, 'error code -81'):
         ret1 = wdmtoolbox.extract(self.wdmname, 32000)
Пример #7
0
 def test_extract_args(self):
     wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
     wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2,
                             base_year=1970, tsstep=15)
     wdmtoolbox.csvtowdm(self.wdmname, 101,
                         input_ts='tests/nwisiv_02246000.csv')
     with assertRaisesRegexp(ValueError,
                             'The only allowed keywords are'):
         ret1 = wdmtoolbox.extract(self.wdmname, 101, ph=True)
Пример #8
0
 def test_out_of_bounds_dsn(self):
     wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
     wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2,
                             base_year=1970, tsstep=15)
     wdmtoolbox.csvtowdm(self.wdmname, 101,
                         input_ts='tests/nwisiv_02246000.csv')
     with assertRaisesRegexp(WDMError,
                 'WDM error: data set number out of valid range'):
         ret1 = wdmtoolbox.extract(self.wdmname, 32001)
Пример #9
0
    def test_start_date(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2,
                                base_year=1970, tsstep=15)
        wdmtoolbox.csvtowdm(self.wdmname, 101,
                            input_ts='tests/nwisiv_02246000.csv')
        ret1 = wdmtoolbox.extract(self.wdmname, 101, start_date='2014-02-21 16:00:00')

        ret3 = tstoolbox.read('tests/nwisiv_02246000.csv', start_date='2014-02-21 16:00:00').astype('float64')
        ret1.columns = ['02246000_iv_00060']
        assert_frame_equal(ret1, ret3)
Пример #10
0
 def test_dsn_not_in_wdm(self):
     wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
     wdmtoolbox.createnewdsn(self.wdmname,
                             101,
                             tcode=2,
                             base_year=1970,
                             tsstep=15)
     wdmtoolbox.csvtowdm(self.wdmname,
                         101,
                         input_ts='tests/nwisiv_02246000.csv')
     with self.assertRaisesRegexp(WDMError, 'error code -81'):
         ret1 = wdmtoolbox.extract(self.wdmname, 32000)
Пример #11
0
 def test_negative_dsn(self):
     wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
     wdmtoolbox.createnewdsn(self.wdmname,
                             101,
                             tcode=2,
                             base_year=1970,
                             tsstep=15)
     wdmtoolbox.csvtowdm(self.wdmname,
                         101,
                         input_ts='tests/nwisiv_02246000.csv')
     with self.assertRaisesRegexp(
             WDMError, 'WDM error: data set number out of valid range'):
         ret1 = wdmtoolbox.extract(self.wdmname, 0)
Пример #12
0
 def test_extract_args(self):
     wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
     wdmtoolbox.createnewdsn(self.wdmname,
                             101,
                             tcode=2,
                             base_year=1970,
                             tsstep=15)
     wdmtoolbox.csvtowdm(self.wdmname,
                         101,
                         input_ts='tests/nwisiv_02246000.csv')
     with self.assertRaisesRegexp(ValueError,
                                  'The only allowed keywords are'):
         ret1 = wdmtoolbox.extract(self.wdmname, 101, ph=True)
Пример #13
0
    def test_extract(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=5, base_year=1870)
        wdmtoolbox.csvtowdm(self.wdmname, 101, input_ts="tests/sunspot_area.csv")
        ret1 = wdmtoolbox.extract(self.wdmname, 101).astype("f")
        ret2 = wdmtoolbox.extract("{0},101".format(self.wdmname)).astype("f")
        assert_frame_equal(ret1, ret2)

        ret3 = tstoolbox.read("tests/sunspot_area.csv").astype("f")
        ret1.columns = ["Area"]
        assert_frame_equal(ret1, ret3)

        ret4 = tstoolbox.read(
            "tests/sunspot_area_with_missing.csv", dropna="no"
        ).astype("f")

        wdmtoolbox.createnewdsn(self.wdmname, 500, tcode=5, base_year=1870)
        wdmtoolbox.csvtowdm(
            self.wdmname, 500, input_ts="tests/sunspot_area_with_missing.csv"
        )
        ret5 = wdmtoolbox.extract(self.wdmname, 500).astype("f")
        ret5.columns = ["Area"]
        assert_frame_equal(ret5, ret4)
Пример #14
0
    def test_extract(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=5, base_year=1870)
        wdmtoolbox.csvtowdm(self.wdmname,
                            101,
                            input_ts='tests/sunspot_area.csv')
        ret1 = wdmtoolbox.extract(self.wdmname, 101)
        ret2 = wdmtoolbox.extract('{0},101'.format(self.wdmname))
        assert_frame_equal(ret1, ret2)

        ret3 = tstoolbox.read('tests/sunspot_area.csv')
        ret1.columns = ['Area']
        assert_frame_equal(ret1, ret3)

        ret4 = tstoolbox.read('tests/sunspot_area_with_missing.csv',
                              dropna='no')

        wdmtoolbox.createnewdsn(self.wdmname, 500, tcode=5, base_year=1870)
        wdmtoolbox.csvtowdm(self.wdmname,
                            500,
                            input_ts='tests/sunspot_area_with_missing.csv')
        ret5 = wdmtoolbox.extract(self.wdmname, 500)
        ret5.columns = ['Area']
        assert_frame_equal(ret5, ret4)
Пример #15
0
    def test_end_date(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2,
                                base_year=1970, tsstep=15)
        wdmtoolbox.csvtowdm(self.wdmname, 101,
                            input_ts='tests/nwisiv_02246000.csv')
        ret1 = wdmtoolbox.extract(self.wdmname,
                                  101,
                                  end_date='2014-02-22 11:00:00')

        ret3 = tstoolbox.read('tests/nwisiv_02246000.csv',
                              end_date='2014-02-22 11:00:00').astype('float64')
        ret3.index = ret3.index.tz_localize(None)
        ret1.columns = ['02246000_iv_00060']
        assert_frame_equal(ret1, ret3, check_index_type=False)
Пример #16
0
    def test_end_date(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname,
                                101,
                                tcode=2,
                                base_year=1970,
                                tsstep=15)
        wdmtoolbox.csvtowdm(self.wdmname,
                            101,
                            input_ts='tests/nwisiv_02246000.csv')
        ret1 = wdmtoolbox.extract(self.wdmname,
                                  101,
                                  end_date='2014-02-22 11:00:00')

        ret3 = tstoolbox.read('tests/nwisiv_02246000.csv',
                              end_date='2014-02-22 11:00:00').astype('float64')
        ret1.columns = ['02246000_iv_00060']
        assert_frame_equal(ret1, ret3)
Пример #17
0
    def test_dates(self):
        wdmtoolbox.createnewwdm(self.wdmname, overwrite=True)
        wdmtoolbox.createnewdsn(self.wdmname, 101, tcode=2, base_year=1970, tsstep=15)
        wdmtoolbox.csvtowdm(self.wdmname, 101, input_ts="tests/nwisiv_02246000.csv")
        ret1 = wdmtoolbox.extract(
            self.wdmname,
            101,
            start_date="2014-02-21 16:00:00",
            end_date="2014-02-22 11:00:00",
        )

        ret3 = tstoolbox.read(
            "tests/nwisiv_02246000.csv",
            start_date="2014-02-21 16:00:00",
            end_date="2014-02-22 11:00:00",
        ).astype("float64")
        ret3.index = ret3.index.tz_localize(None)
        ret1.columns = ["02246000_iv_00060"]
        assert_frame_equal(ret1, ret3, check_index_type=False)
Пример #18
0
'''This is an example script that finds all the DSN from a WDM file
and uses the first DSN to extract the data and plot it. 
It can easily be modified to loop through all the datasets.'''

from wdmtoolbox import wdmtoolbox as wdm
import pandas as pd
files_path = 'C:\BASINS45\modelout\Test'
wdmfile = os.path.join(files_path, 'Test.wdm')
DataList = wdm.listdsns(
    wdmfile)  #Getting the list of all datasets from the WDMFile as OrderedDict
DSNList = list(DataList.keys())  #Extracting the list of DSN from DataList
dataSeries = wdm.extract(
    wdmfile,
    DSNList[0])  #extracting the dataset using the first DSN in DSNList
dataSeries = dataSeries['2002-05-31':'2002-07-31']  #subsetting the data
dataSeries.plot()  #plotting the dataframe
#dataSeries is a dataframe
Пример #19
0
    allFiles1 = glob.glob(source_dir_met + "/*met*.wdm*")
    allFiles2 = glob.glob(source_dir_prad + "/*prad*.wdm*")

    #our file destination
    output_folder = r"C:\Users\icprbadmin\Documents\Python_Scripts\FEWS_WDM\output"
    #print("win32 os")
#---------------------------------------------------#

#------------iterate through the met files---#
for file in allFiles1:

    #------------1000.PET-------------#
    # takes specific indexes from the right to include only the unique identification code
    title = file[-10:-4]
    # use wdmtoolbox function to assign data to a pandas dataframe
    data_df = wdmtoolbox.extract(file, 1000)
    #add rows to dataframe to accommodate year, month, day and hour we will pull from our datetimeindex object
    data_df = pd.concat(
        [data_df,
         pd.DataFrame(columns=("year", "month", "day", "hour"))],
        sort=False)
    #then we add the values from the DatetimeIndex to the appropriate column
    data_df['year'] = data_df.index.year
    data_df['month'] = data_df.index.month
    data_df['day'] = data_df.index.day
    data_df['hour'] = data_df.index.hour
    #output the data to the output directory with the required file extension
    data_df.to_csv(output_folder + "/" + title + ".PET")
    #-----------------------------------#

    #------------1001.DPT-----------------#
Пример #20
0
    if 'End of Job' in echoFileLines[len(echoFileLines) - 1]:
        print('Real Time HSPF model ran successfully!')
    else:
        print('Real Time HSPF model did not run successfully')
        sys.exit()
except:
    print('Could not open echo file. Check if any of the files are locked.')
    sys.exit()

DSNList = [100]
#A list of DSN that are in the HSPF Model Output WDM file with the data that is needed for the EFDC+ model
OverAllDF = []

for DSN in DSNList:
    #Read the WDM data and save in a dataframe
    df = wdm.extract(os.path.join(pHSPFModelPath, pWDMFile), DSN)
    df = df['2012-1-1':]
    #Clip the data
    df = df.resample('D').mean()
    #resample the data to daily
    df.columns = ['HSPF_' + str(DSN)]
    #Rename the column name
    diff = df.index - zeroDay
    df.index = diff / pd.to_timedelta(1, unit='D')
    #Change the index so that it matches the numerical indexing for EFDC+
    OverAllDF.append(df)

OverAllDF = pd.concat(OverAllDF, axis=1)
#The OverAllDF has all the HSPF model outputs and it can be processed to
#add in the EFDC+ model.
'''Now, Read the existing qser.inp file and append the HSPF data to it. 
Пример #21
0
# print todaysdate
threemonthago = datetime.datetime(correctyear, correctmonth, i.day)
# print threemonthago

# ---------------------------------------------------------------------------#
# ---going through the met files and prnt files with issues------------------#

# print 'Check the following files for negative values in wdms'

for file_ in allFiles1:
    title = file_[-10:-4]
    oldfile_ = glob.glob(metdirectory2 + "/met_" + title + ".wdm")
    figurename1 = path1 + "/atmp/atmp_" + title + ".png"
    # print oldfile_[0]
    figurename2 = path1 + "/atmp/old_atmp_" + title + ".png"
    dataatmp1 = wdmtoolbox.extract(file_, 1004)
    dataatmp2 = wdmtoolbox.extract(oldfile_[0], 1004)
    df1 = dataatmp1
    df2 = dataatmp2
    df3 = df2.subtract(df1, fill_value=0)
    a = 1
    # textfile =  path1+ "/atmp/atmp_" +  title + ".txt"

    if a == 1:
        # print figurename1
        # f1=open(textfile)
        # f1=textfile
        # nv.to_csv(f1)
        # f1.close()
        fig, [ax1, ax2, ax3] = plt.subplots(nrows=3, ncols=1)
        fig.set_size_inches(10.5, 10.5)
from wdmtoolbox import wdmtoolbox as wdm
import pandas as pd
"""Locate the wdm file"""
wdmfile = 'C:\BASINS45\modelout\LowWill_APGIS\LowerWil.wdm'
DataList = wdm.listdsns(wdmfile)

RCHRES_List = [
    'R:101', 'R:103', 'R:105', 'R:107', 'R:109', 'R:111', 'R:113', 'R:115',
    'R:117', 'R:119', 'R:121', 'R:123', 'R:125', 'R:127', 'R:129', 'R:131',
    'R:133', 'R:135', 'R:137', 'R:139', 'R:141', 'R:143', 'R:201', 'R:203',
    'R:205', 'R:207', 'R:209', 'R:211', 'R:213', 'R:215', 'R:217', 'R:219',
    'R:221', 'R:223', 'R:225', 'R:227', 'R:229', 'R:231', 'R:233', 'R:235',
    'R:237', 'R:301', 'R:303', 'R:305', 'R:307', 'R:309', 'R:401', 'R:403',
    'R:405', 'R:407', 'R:409', 'R:411', 'R:413', 'R:415', 'R:417'
]

TauAnalysisText = ''
for key in DataList.keys():
    data = DataList[key]
    Location = data['location'].decode('utf-8')
    Constituent = data['constituent'].decode('utf-8')
    if Constituent == 'TAU':
        dataSeries = wdm.extract(wdmfile, key)
        TauAnalysisText+= Location +','+ '{:.3E}'.format(dataSeries.quantile(0.01)[0]) + \
                    ','+ '{:.3E}'.format(dataSeries.quantile(0.02)[0]) + \
                    ','+ '{:.3E}'.format(dataSeries.quantile(0.98)[0]) + \
                    ','+ '{:.3E}'.format(dataSeries.quantile(0.99)[0]) + '\n'
f = open('C:\BASINS45\modelout\LowWill_APGIS\LowWillTau.txt', 'w+')
f.write(TauAnalysisText)
f.close()