def print_new_dead_new_alive():
    start_orbit = 21847 
    end_orbit = 21890

#    start_orbit = 22820 
#    end_orbit = 22890

#    start_orbit = 24023
#    end_orbit = 24051

#    start_orbit = 27229 
#    end_orbit = 27258

#    start_orbit = 32726 
#    end_orbit = 32870

#    start_orbit = 49230
#    end_orbit = 49259

    m1 = Mask()
    m1.apply_pixel_window(394, 620)
    m1.load_ascii(start_orbit)

    m2 = Mask()
    for orbit in range(start_orbit, end_orbit):
        m2.load_ascii(orbit)
        print(orbit, "new dead:", m1.get_new_dead(m2), "new alive:", m1.get_new_alive(m2))

    return
def compare_combined_30_vs_32(orbit):
    m30 = Mask()
    m30.load_sdmf30_crit(orbit, "combined")

    m32 = Mask()
    m32.load_sdmf32_mask(orbit, "combinedFlag")

    # for i in range(1024):
    #     print(i, m30.mask[i], m32.mask[i])

    newdead = m30.get_new_dead(m32)
    newalive = m30.get_new_alive(m32)
    print("3.0->3.2 dead:", newdead.size, newdead)
    print("3.0->3.2 alive:", newalive.size, newalive)
    return
def compare_error_30_vs_32(orbit):
    m30 = Mask()
    m30_combined = Mask()
    m30_combined.load_ascii(orbit)
    m30.load_sdmf30_crit(orbit, "residual")

    m32 = Mask()
    m32.load_sdmf32_figure(orbit, "darkError")

    newdead = m30.get_new_dead(m32)
    newalive = m30.get_new_alive(m32)
    print("new errory:", newdead.size, newdead)
    print("new errory but already bad", np.sum(np.in1d(newdead, np.where(m30_combined.mask))))
    print("real new errory", newdead[np.in1d(newdead, np.where(m30_combined.mask), invert=True)])

    print("new not-errory:", newalive.size, newalive)
    print("new not-errory but still bad", np.sum(np.in1d(newalive, np.where(m30_combined.mask))))
    print("real new not-errory:", newalive[np.in1d(newalive, np.where(m30_combined.mask), invert=True)])
    return