def qa_filter(
    mhm_df,
    has_genus=False,
    min_larvae_count=-9999,
    has_photos=False,
    is_container=False,
):
    """
    Can filter a cleaned and flagged mosquito habitat mapper DataFrame based on the following criteria:
    - `Has Genus`: If the entry has an identified genus
    - `Min Larvae Count` : Minimum larvae count needed for an entry
    - `Has Photos` : If the entry contains valid photo entries
    - `Is Container` : If the entry's watersource was a container

    Returns a copy of the DataFrame

    Parameters
    ----------
    has_genus : bool, default=False
        If True, only entries with an identified genus will be returned.
    min_larvae_count : int, default=-9999
        Only entries with a larvae count greater than or equal to this parameter will be included.
    has_photos : bool, default=False
        If True, only entries with recorded photos will be returned
    is_container : bool, default=False
        If True, only entries with containers will be returned

    Returns
    -------
    pd.DataFrame
        A DataFrame of the applied filters.
    """

    mhm_df = mhm_df[mhm_df["mhm_LarvaeCount"] >= min_larvae_count]

    if has_genus:
        mhm_df = mhm_df[mhm_df["mhm_HasGenus"] == 1]
    if has_photos:
        mhm_df = mhm_df[mhm_df["mhm_PhotoBitDecimal"] > 0]
    if is_container:
        mhm_df = mhm_df[mhm_df["mhm_IsWaterSourceContainer"] == 1]

    return mhm_df