Handle somatic INFO classifications from MuTect, MuTect2, VarDict, VarScan and Octopus.

def _is_germline(rec):
    """Handle somatic INFO classifications from MuTect, MuTect2, VarDict, VarScan and Octopus.
    """
    if _has_somatic_flag(rec):
        return False
    if _is_mutect2_somatic(rec):
        return False
    ss_flag = rec.INFO.get("SS")
    if ss_flag is not None:
        if str(ss_flag) == "1":
            return True
    # Octopus, assessed for potentially being Germline and not flagged SOMATIC
    # https://github.com/luntergroup/octopus/wiki/Calling-models:-Cancer#qual-vs-pp
    pp = rec.INFO.get("PP")
    if pp and float(pp) / float(rec.QUAL) >= 0.5:
        return True
    status_flag = rec.INFO.get("STATUS")
    if status_flag is not None:
        if str(status_flag).lower() in ["germline", "likelyloh", "strongloh", "afdiff", "deletion"]:
            return True
    return False