def METHOD_NAME():
    train_data_path, trained_model_path = get_options()
    # ########
    # Preprocessing
    # ########
    train_data = pd.read_csv(train_data_path)
    scaled_train_data = preprocessing(train_data)
    x_train, x_test = train_test_split(scaled_train_data, test_size=0.3, random_state=42)
    x_train = x_train.astype(np.float32)
    x_test = x_test.astype(np.float32)
    # ########
    # Model
    # ########
    autoencoder_model = create_model(x_train.shape[1])
    autoencoder_model.summary()
    # ########
    # Training
    # ########
    batch_size = 64
    max_epochs = 10
    learning_rate = .0001
    opt = optimizers.Adam(learning_rate=learning_rate)
    autoencoder_model.compile(optimizer=opt, loss='mse', metrics=['accuracy'])
    autoencoder_model.fit(x_train, x_train,
                          shuffle=True,
                          epochs=max_epochs,
                          batch_size=batch_size,
                          validation_data=(x_test, x_test))
    autoencoder_model.save(trained_model_path)
    # ########
    # Postprocessing
    # ########
    x_test_recon = autoencoder_model.predict(x_test)
    reconstruction_scores = np.mean((x_test - x_test_recon)**2, axis=1)  # MSE
    anomaly_data = pd.DataFrame({'recon_score': reconstruction_scores})
    print(anomaly_data.describe())
    # Compute threshold from test set
    alpha = 1.5
    threshold = np.max(reconstruction_scores) * alpha
    print("Anomaly score threshold: %f" % threshold)