コード例 #1
0
def doubles_classification_stats(positions,
                                 energies,
                                 classification,
                                 close_max=1.0,
                                 scale=False):
    """Outputs calculated separation distances, relative energies,
    and energy differences for double events in the dataset.


    :param positions:    event positions of interest, e.g validation positions
    :param energies:     event energies of interest, e.g validation energies
    :param classification:  event classification result
    :param close_max:    Upper limit to what is to be considered a 'close'
                        event. Defaults to 1.0 pixels.

    :return df_doubles: DataFrame containing information about double events
    """

    s_idx, d_idx, c_idx = event_indices(positions, close_max)
    sep_dist = separation_distance(positions[d_idx])
    energy_diff = energy_difference(energies[d_idx])
    rel_energy = relative_energy(energies[d_idx], scale=scale)

    df_doubles = pd.DataFrame(data={
        "close": np.isin(d_idx, c_idx),
        "separation distance": sep_dist.flatten(),
        "relative energy": rel_energy.flatten(),
        "energy difference": energy_diff.flatten(),
        "classification": classification[d_idx].flatten(),
        "indices": d_idx.flatten(),
    },
                              index=np.arange(d_idx.shape[0]))
    return df_doubles
コード例 #2
0
def singles_classification_stats(positions, energies, classification):
    """Outputs calculated separation distances, relative energies,
    and energy differences for double events in the dataset.


    :param positions:    event positions of interest, e.g validation positions
    :param energies:     event energies of interest, e.g validation energies
    :param classification:  event classification result

    :return df_singles: DataFrame containing information about single events
    """

    s_idx, d_idx, c_idx = event_indices(positions)
    df_singles = pd.DataFrame(data={
        "x_pos": positions[s_idx, 0].flatten(),
        "y_pos": positions[s_idx, 1].flatten(),
        "energy": energies[s_idx, 0].flatten(),
        "classification": classification[s_idx].flatten(),
        "indices": s_idx.flatten(),
    },
                              index=np.arange(s_idx.shape[0]))
    return df_singles
コード例 #3
0
warnings.filterwarnings('ignore', category=FutureWarning)

# ================== Config =======================
with open("results_experiment_config.json", 'r') as fp:
    config = json.load(fp)

# ================== Callbacks ====================

# ================== Import Data ==================
DATA_PATH = get_git_root() + "data/simulated/"
images = np.load(DATA_PATH + config['data']['images'])
images = images.reshape(images.shape[0], 256)
energies = np.load(DATA_PATH + config['data']['energies'])
positions = np.load(DATA_PATH + config['data']['positions'])

single_indices, double_indices, close_indices = event_indices(positions)
# log-scale the images if desireable
config['scaling'] = "minmax"
if "np.log" in config['scaling']:
    images = np.log1p(images)

# set tf random seed
tf.random.set_seed(config['random_seed'])
# ================== Import Data ==================
with tf.device(get_tf_device(20)):
    model = Sequential()
    model.add(Dense(2, activation='relu', input_shape=(256, )))
    model.compile(
        loss='mse',
        optimizer='adam',
    )