コード例 #1
0
def test_amsaves_results():
    """ Pass the results of get_model_comparisons to the amsaves_results 
        function, confirm DataFrame returned in requested results format for
        the 'America Saves!' program (write contents to .CSV file for review)
        """

    for site in sites:
        bldgIDct = deltamtrsvs.get_property_bldgs(properties_url, site,
                                                    headers)
        bldgIDs = []
        for key in bldgIDct:
            bldgIDs.append(str(key))
        bldgModelsDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                headers)
        modelIDs = []
        for key, value in bldgModelsDct.iteritems():
            jsonModelsDct = value
            for key, value in jsonModelsDct.iteritems():
                modelIDs.append(str(value['SolutionID']))
                
        comparisonsDct = deltamtrsvs.get_model_comparisons(comparison_url,
                                                           bldgModelsDct,
                                                           headers)
        bldgModelsDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                    headers)
        usesDf = ams.amsaves_results(comparisonsDct, bldgModelsDct, bldgIDct)

        fname = site+'-results.csv'
        with open(fname, 'wb') as outf:
            outcsv = usesDf.to_csv(fname)

    assert isinstance(usesDf, pd.DataFrame)
    assert usesDf.shape[1] == 16
コード例 #2
0
def test_amsaves_audit():
    """ Pass the results of get_model_audits function, confirm DataFrame
        returned in requested results format for the 'America Saves!' program
        (write contents to .CSV file for review) """

    for site in sites:
        bldgIDct = deltamtrsvs.get_property_bldgs(properties_url, site,
                                                  headers)
        bldgIDs = []
        for key in bldgIDct:
            bldgIDs.append(str(key))

        bldgModelsDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                headers)
        refModelsDct = {}
        for key, value in bldgModelsDct.iteritems():
            refModelsDct[key] = value['Reference Model']
                
        audits = deltamtrsvs.get_model_audits(audit_url, refModelsDct,
                                              headers)
        combinedUsageDct = ams.amsaves_audit(audits)

        assert isinstance(combinedUsageDct, dict)
        assert len(combinedUsageDct) == len(audits)

        for key, value in combinedUsageDct.iteritems():
            df = value
            print(df)
            assert type(key) == tp.StringType
            assert re.match('\d{3}', key)
            assert isinstance(value, pd.DataFrame)
            #assert df.shape[1] == 14
            fname = key + '-audit.csv'
            with open(fname, 'wb') as outf:
                outcsv = df.to_csv(fname)
コード例 #3
0
def test_get_model_audits():
    """ Pass a list of model IDs; confirm the funciton returns valid audit IDs
        and the expected audit data """ 

    for site in sites:
        bldgIDct = deltamtrsvs.get_property_bldgs(properties_url, site,
                                                  headers)
        bldgIDs = []
        for key in bldgIDct:
            bldgIDs.append(str(key))

        bldgModelsDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                headers)
        refModelsDct = {}
        for key, value in bldgModelsDct.iteritems():
            refModelsDct[key] = value['Reference Model']
        
        print(refModelsDct.keys())
        audits = deltamtrsvs.get_model_audits(audit_url, refModelsDct,
                                              headers)
        print(audits.keys())
        type(audits) == tp.DictType
        for key, values in audits.iteritems():
            assert re.match('\d{3}', key)
            assert type(values) == tp.ListType
            assert [type(value) == tp.DictType for value in values]
コード例 #4
0
def test_get_bldg_models():
    """ Pass a list of bldg ids & header, confirm the fuction returns the
        expected valid bldg IDs """

    with HTTMock(model_response_content):
        bldgIDs = ['1266']
        bldgModelsDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                    private.headers)
        for key, value in bldgModelsDct.iteritems():
            assert type(value) == tp.DictType
            assert type(key)== tp.StringType 
            assert re.match('\d{4}', key)
            jsonModelsDct = value
            for key, value in jsonModelsDct.iteritems():
                assert type(key) == tp.StringType
                assert type(value) == tp.DictType
コード例 #5
0
def test_amsaves_usage_range():
    """ Pass the results of get_model_audits function, confirm returned
        dictionary in requested results format for the 'America Saves!' program
        """

    for site in sites:
        bldgIDct = deltamtrsvs.get_property_bldgs(properties_url, site,
                                                  headers)
        bldgIDs = []
        for key in bldgIDct:
            bldgIDs.append(str(key))

        bldgModelsDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                headers)
        refModelsDct = {}
        for key, value in bldgModelsDct.iteritems():
            refModelsDct[key] = value['Reference Model']
                
        audits = deltamtrsvs.get_model_audits(audit_url, refModelsDct, headers)
        auditSpans = ams.amsaves_usage_range(audits)
        assert type(auditSpans) == tp.DictType
        # assert len(auditSpans) == len(refModelIDs)

        spans = []
        for key, value in auditSpans.iteritems():
            assert type(key) == tp.StringType
            assert type(value) == tp.DictType
            vals = [key, auditSpans[key]['E. Per. Begin'],
                    auditSpans[key]['E. Per. End'],
                    auditSpans[key]['G. Per. Begin'],
                    auditSpans[key]['G. Per. End']]
            
            # TODO (eayoungs): Add exception handling and include in final
            #                  *else* statement
            spans.append(vals)
        colNms = ['Ref. Model ID', 'E. Per. Begin', 'E. Per. End',
                  'G. Per. Begin', 'G. Per. End']
        df = pd.DataFrame(data=spans, columns=colNms)
            
        fname = site +'-use_ranges.csv'
        with open(fname, 'wb') as outf:
            outcsv = df.to_csv(fname)
コード例 #6
0
def test_get_meter_records():
    """ Pass a dictionary of *audit* spans from amsaves_usage_range with
        reference model IDs from the amsaves_usage_range function as keys and
        a list of meter IDs from get_bldg_meters function  """

    #for site in sites:
    site = '46'
    bldgIDct = deltamtrsvs.get_property_bldgs(properties_url, site, headers)
    bldgIDs = []
    for key in bldgIDct:
        bldgIDs.append(str(key))

    bldgModelsDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                headers)
    refModelsDct = {}
    for key, value in bldgModelsDct.iteritems():
        refModelsDct[key] = value['Reference Model']
            
    comparisonsDct = deltamtrsvs.get_model_comparisons(comparison_url,
                                                       bldgModelsDct,
                                                       headers)
    audits = deltamtrsvs.get_model_audits(audit_url, refModelsDct, headers)
    auditSpans = ams.amsaves_usage_range(audits)
    bldgMeterDct = deltamtrsvs.get_bldg_meters(pvt.bldg_meters_url, bldgIDs,
                                               headers)
    bldgMeterRecordsDct = deltamtrsvs.get_meter_records(auditSpans,
                                                        bldgMeterDct,
                                                        pvt.meter_records_url,
                                                        headers)
    assert type(bldgMeterRecordsDct) == tp.DictType
    for key, value in bldgMeterRecordsDct.iteritems():
        assert type(key) == tp.StringType
        assert type(value) == tp.DictType
        assert len(value) <= 2
        elecMtrVals = value['Elec. Meter Records']
        assert type(elecMtrVals) == tp.ListType
        assert [type(elecMtrVal) == tp.DictType for elecMtrVal in elecMtrVals]
        if len(value) == 2:
            gasMtrVals = value['Gas Meter Records']
            assert type(gasMtrVals) == tp.ListType
            assert [type(gasMtrVal) == tp.DictType for gasMtrVal in gasMtrVals]
            assert elecMtrVals != gasMtrVals
コード例 #7
0
def test_get_model_comparisons():
    """ Pass a list of models' data, confirm the fuction returns the expected
        model IDs """

    for site in sites:
        bldgIDct = deltamtrsvs.get_property_bldgs(properties_url, site,
                                                  headers)
        bldgIDs = []
        for key in bldgIDct:
            bldgIDs.append(str(key))

        bldgModelsDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                    headers)
        comparisonsDct = deltamtrsvs.get_model_comparisons(comparison_url,
                                                           bldgModelsDct,
                                                           headers)
        assert type(comparisonsDct) == tp.DictType
        for key, value in comparisonsDct.iteritems():
            assert type(key) == tp.StringType
            assert type(value) == tp.DictType
コード例 #8
0
def test_get_bldg_models():
    """ Pass a list of bldg ids & header, confirm the fuction returns the
        expected valid bldg IDs """

    for site in sites:
        bldgIDct = deltamtrsvs.get_property_bldgs(properties_url, site,
                                                  headers)
        bldgIDs = []
        for key in bldgIDct:
            bldgIDs.append(str(key))

        bldgModelsDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                            headers)
        for key, value in bldgModelsDct.iteritems():
            assert type(value) == tp.DictType
            assert type(key)==tp.StringType 
            assert re.match('\d{4}', key)
            jsonModelsDct = value
            for key, value in jsonModelsDct.iteritems():
                assert type(key) == tp.StringType
                assert type(value) == tp.DictType
コード例 #9
0
def test_amsaves_flags():
    """ """

    for site in sites:
        bldgIDct = deltamtrsvs.get_property_bldgs(properties_url, site,
                                                  headers)
        bldgIDs = []
        for key in bldgIDct:
            bldgIDs.append(str(key))

        modelsJsonDct = deltamtrsvs.get_bldg_models(model_url, bldgIDs,
                                                            headers)
        valBldgIDs = []
        for key in modelsJsonDct:
            valBldgIDs.append(str(key))

        fvCharts = deltamtrsvs.get_fv_charts(pvt.fv_charts_url, valBldgIDs,
                                         headers)
        diagnMsgCodes = ams.amsaves_flags(fvCharts)
        # TODO (eayoungs): Needs more robust assertions
        assert type(diagnMsgCodes) == tp.DictType
        siteFlags = []
        for key, value in diagnMsgCodes.iteritems():
            bldgvalues = []
            if value['Occupant Load'][0] == 'A' or \
                value['Occupant Load'][0] == 'B' or \
                value['Occupant Load'][0] == 'C':
                intrnElec = value['Occupant Load'][0]
                ultrHighIntExt = ''
            elif value['Occupant Load'][0] == 'O' or \
                value['Occupant Load'] == 'P':
                ultrHighIntExt = value['Occupant Load'][0]
                intrnElec = ''
            # TODO (eayoungs): Add exception handling for final *else*
            #                  statement
            if value['Summer Gas Use'][1] == "High":
                highGasBaseLd = "M"
            else: highGasBaseLd = ""

            bldgFlags = [key, intrnElec, ultrHighIntExt,
                         value['Controls Heating'][0],
                         value['Shell Ventilation'][0],
                         value['Controls Cooling'][0],
                         value['Cooling Efficiency'][0],
                         value['Data Consistency'][0],
                         highGasBaseLd]

            siteFlags.append(bldgFlags)
            assert len(bldgFlags) == 9
            assert [type(bldgFlag) == tp.StringType for bldgFlag in bldgFlags]
            assert [len(bldgFlag) == 1 for bldgFlag in bldgFlags]
    
            colNms = ['Bldg ID','Int. Elec.', 'Ultra-High Elec.',
                      'Excessive Htg.', 'Shell & Vent.', 'Excessive Clg',
                      'Inefficient Clg', 'Erratic Operation', 'High Gas Eqp.']
            df = pd.DataFrame(data=siteFlags, columns=colNms)

            fname = site+'-flags.csv'
            with open(fname, 'wb') as outf:
                outcsv = df.to_csv(fname)

    assert len(siteFlags) == len(diagnMsgCodes)
    assert len(fvCharts) <= len(bldgIDs)