pm to aqi

stuff
 avatar
unknown
plain_text
3 years ago
1.3 kB
6
Indexable
def round_up(aqi_float: float) -> int:
    print("og:", aqi_float) # debug
    split_num = str(aqi_float).split('.')
    int_part = int(split_num[0])
    decimal_part = int(split_num[1][0])
    print("decimalpart:", decimal_part) # Debug
    if decimal_part >= 5:
        return int_part + 1
    else:
        return int_part


def PM25_to_AQI(pm: int or float) -> int:
    """
    Categorizes each PM into the AQI values
    :param pm:
    :return:
    """
    if pm < 12.1:
        return pm * 50 / 12.0
    elif pm < 35.5:
         y = 51 + ((pm - 12.0) * (100 - 51)) / (35.5 - 12.0)
         return (y)
         # return round_up(y)
    elif pm < 55.5:
        y = 101 + ((pm - 35.0) * (150 - 101)) / (55.5 - 35.0)
        return (y)
        return round_up(y)
    elif pm < 150.5:
        y = 151 + ((pm - 55.5) * (200 - 151)) / (150.5 - 55.5)
        return round_up(y)
    elif pm < 250.5:
        y = 201 + ((pm - 150.5) * (300 - 201)) / (250 - 150.5)
        return round_up(y)
    elif pm < 350.5:
        y = 301 + ((pm - 250.5) * (400 - 301)) / (350.5 - 250.5)
        return round_up(y)
    elif pm < 500.5:
        y = 401 + ((pm - 350.5) * (500 - 401)) / (500.5 - 350.5)
        return round_up(y)
    elif pm >= 500.5:
        return 501
    else:
        return 0
Editor is loading...