def compare_smoothmasks():
    fname = input_mask_fname #"sdmf_pyxelmask.h5"
    fid = h5py.File(fname, "r")
    ds_orbits = fid["orbits"]
    idx = np.argsort(ds_orbits[:])
    orbits32 = ds_orbits[:][idx]
    start_orbit = np.min(orbits32)
    stop_orbit = np.max(orbits32)
    orbit_range = stop_orbit - start_orbit + 1
    #print(idx)
    ds_combi = fid["combined"]
    num_orbits = idx.size
    a = np.empty((num_orbits,1024), dtype=np.float)
    for i_orbit in range(num_orbits):
        id_ = idx[i_orbit]
        orbit = orbits32[i_orbit]
#        a[orbit-start_orbit,:] = ds_combi[id_,:]
        a[i_orbit,:] = ds_combi[id_,:]
    fid.close()
    print("3.2 read")

    # print(a.shape)
    # plt.cla()
    # plt.imshow(a)
    # plt.show()

    # fname_out = "orbital_dbqm.h5"
    # fid_out = h5py.File(fname_out, "w")
    # ds = fid_out.create_dataset("data", a.shape, dtype=np.float)
    # ds[:,:] = a
    # fid_out.close()
    # np.savetxt("orbital_dbqm.csv", a, delimiter=",")

    m = Mask()
    a_binary = np.ones((1400,1024), dtype=np.bool)
    i_orbit = 0
    orbits30 = np.empty(1400, dtype=np.int)
    for orbit in range(42000,43400):
        #print(orbit)
        try:
            m.load_sdmf30_crit(orbit, "combined", smooth=True)
        except:
            continue
        orbits30[i_orbit] = orbit
        a_binary[i_orbit,:] = m.mask
        i_orbit += 1
    print("3.0 read")

    orbits30 = orbits30[0:i_orbit]
    a_binary = a_binary[0:i_orbit,:]

    for pixnr in range(1024):
        plot(orbits32, a, orbits30, a_binary, pixnr)

    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