Exemple #1
0
def save_results(data_img, crystal, refl, fcalc_file, Xang, Yang, filename):
    x = col((1, 0, 0))
    y = col((0, 1, 0))
    rX = x.axis_and_angle_as_r3_rotation_matrix(Xang, deg=True)
    rY = y.axis_and_angle_as_r3_rotation_matrix(Yang, deg=True)

    energies, fcalc_at_en = sim_utils.load_fcalc_file(fcalc_file)
    Patts = PatternFactory()
    Patts.adjust_mosaicity(2, 0.05)
    #flux_per_en = [fracA*Patts.SIM2.flux, fracB*Patts.SIM2.flux]
    flux_per_en = [fracA * 1e14, fracB * 1e14]

    sim_patt = Patts.make_pattern2(crystal=deepcopy(crystal),
                                   flux_per_en=flux_per_en,
                                   energies_eV=energies,
                                   fcalcs_at_energies=fcalcs_at_en,
                                   mosaic_spread=None,
                                   mosaic_domains=None,
                                   ret_sum=True,
                                   Op=None)
    sim_patt_R = Patts.make_pattern2(crystal=deepcopy(crystal),
                                     flux_per_en=flux_per_en,
                                     energies_eV=energies,
                                     fcalcs_at_energies=fcalcs_at_en,
                                     mosaic_spread=None,
                                     mosaic_domains=None,
                                     ret_sum=True,
                                     Op=rX * rY)
    refls = [refl] * 3
    imgs = [sim_patt, data_img, sim_patt_R]
    utils.images_and_refls_to_simview(filename, imgs, refls)
Exemple #2
0
def simulate_xyscan_result(scan_data_file, prefix=None):
    """
    scan data is the output of yhe xyscan refinement script

    :param scan_data_file: string path
    :param prefix: output path prefix where results will be written
    :return:
    """
    scan_data = np.load(scan_data_file)
    idx = int(scan_data['hit_idx'])
    if prefix is None:
        prefix = "refined_sim%d" % idx

    # crystal = scan_data['crystal']
    refl = scan_data['refl']

    # xR = scan_data['optX']
    # yR = scan_data['optY']
    optCrystal = scan_data['optCrystal']
    fracA = int(scan_data["fracA"])
    fracB = int(scan_data["fracB"])
    flux = [fracA * 1e14, fracB * 1e14]
    energy, fcalc_f = load_fcalc_file(scan_data['fcalc_f'])

    P = PatternFactory()
    P.adjust_mosaicity(2, 0.05)

    sim_A, sim_B = P.make_pattern2(crystal=deepcopy(optCrystal),
                                   flux_per_en=flux,
                                   energies_eV=energy,
                                   fcalcs_at_energies=fcalc_f,
                                   mosaic_spread=None,
                                   mosaic_domains=None,
                                   ret_sum=False,
                                   Op=None)  # xR * yR)

    if 'optX_fine' in scan_data.keys():
        #xR_fine = scan_data['optX_fine']
        #yR_fine = scan_data['optY_fine']
        optCryst_fine = scan_data["optCrystal_fine"]
        sim_A_fine, sim_B_fine = P.make_pattern2(
            crystal=deepcopy(optCryst_fine),
            flux_per_en=flux,
            energies_eV=energy,
            fcalcs_at_energies=fcalc_f,
            mosaic_spread=None,
            mosaic_domains=None,
            ret_sum=False,
            Op=None)  # xR_fine * yR_fine * xR * yR)
        fine_scan = True
    else:
        fine_scan = False
    # work this into the data stream, perhaps use experiment lists??
    img_file = "/Users/dermen/cxid9114/run62_hits_wtime.h5"
    loader = dxtbx.load(img_file)
    raw_img = loader.get_raw_data(idx).as_numpy_array()

    patts = [sim_A, sim_B, sim_A + sim_B, raw_img]
    refls = [refl] * 4
    utils.images_and_refls_to_simview(prefix, patts, refls)

    if fine_scan:
        patts = [sim_A_fine, sim_B_fine, sim_A_fine + sim_B_fine, raw_img]
        refls = [refl] * 4
        utils.images_and_refls_to_simview(prefix + "_fine", patts, refls)
Exemple #3
0
        flux_per_en = [fracA * 1e14, fracB * 1e14]

        sim_patt = Patts.make_pattern2(crystal=cryst,
                                       flux_per_en=flux_per_en,
                                       energies_eV=energies,
                                       fcalcs_at_energies=fcalcs_at_en,
                                       mosaic_spread=None,
                                       mosaic_domains=None,
                                       ret_sum=True)
        actual_img = loader.get_raw_data(hit_idx).as_numpy_array().astype(
            np.float32)
        refl = data[hit_idx]['refl']
        output_imgs.extend([sim_patt, actual_img])
        output_refls.extend([refl, refl])

    utils.images_and_refls_to_simview(output_pref, output_imgs, output_refls)
    #os.system("dials.image_viewer %s %s" % \
    #          (output_pref+".h5", output_pref+"_strong.pkl"))

x = col((1., 0., 0.))
y = col((0., 1., 0.))
z = col((0., 0., 1.))
xRot = x.axis_and_angle_as_r3_rotation_matrix
yRot = y.axis_and_angle_as_r3_rotation_matrix
zRot = z.axis_and_angle_as_r3_rotation_matrix
degs = np.linspace(-5., 5., 50)  # not sure here..
degs = np.arange(-0.2, 0.2, 0.025)  # still not sure about ranges here.
degs = np.arange(-0.4, 0.4, 0.05)  # feeling more confident about this range
rotXY_series = [(xRot(i, deg=True), yRot(j, deg=True)) for i in degs
                for j in degs]
Exemple #4
0
    iset = loader.get_imageset(loader.get_image_file())
    dblock = DataBlockFactory.from_imageset(iset[idx:idx + 1])[0]
    refl = flex.reflection_table.from_observations(dblock, find_spot_params)

    imgs.append(img)
    refls.append(refl)

    info_fname = image_fname.replace(".h5", ".pkl")
    sim_data = utils.open_flex(info_fname)

    orient = indexer_two_color(
        reflections=count_spots.as_single_shot_reflections(refl,
                                                           inplace=False),
        imagesets=[iset],
        params=indexing_params)

    try:
        orient.index()
        crystals = [o.crystal for o in orient.refined_experiments]
        rmsd = orient.best_rmsd
        sim_data["sim_indexed_rmsd"] = rmsd
        sim_data["sim_indexed_crystals"] = crystals
        sim_data["sim_indexed_refls"] = refl
    except:
        print("FAILED!")

    utils.save_flex(sim_data, info_fname + out_tag)

images_and_refls_to_simview(output_pref, imgs, refls)