import Configrations
import numpy as np
import Encode
import Simulation
import Channel
import Quantized_ML_Decoding_Optimization
import Quantized_ML_Decoder
# address configurations
top_config = Configrations.TopConfig()
train_config = Configrations.TrainingConfig(top_config)
code = Encode.LDPC(top_config.N_code, top_config.K_code, top_config.file_G,
                   top_config.file_H)
channel = Channel.AWGN(top_config)
if top_config.function == 'GenAWGNDecData':
    Simulation.Generate_AWGN_Decoding_Data(top_config, code)

if top_config.function == 'GenBSCDecData':
    Simulation.Generate_BSC_Decoding_Data(top_config, code)

if top_config.function == 'GenAWGNData':
    channel = Channel.AWGN(top_config)
    # generate training data
    Simulation.Generate_AWGN_Training_Data(code, channel, top_config,
                                           train_config, "Training")
    # generate test data
    Simulation.Generate_AWGN_Training_Data(code, channel, top_config,
                                           train_config, "Test")

if top_config.function == 'GenBSCData':
    channel = Channel.BSC(top_config)
    # generate training data