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
    Simulation.Generate_BSC_Training_Data(code, channel, top_config,
                                          train_config, "Training")
    # generate test data
    Simulation.Generate_BSC_Training_Data(code, channel, top_config,
                                          train_config, "Test")

if top_config.function == 'AWGNdecode':
    channel = Channel.AWGN(top_config)
    batch_size = 1250
    simutimes_range = np.array([
        np.ceil(1e7 / float(top_config.K_code * batch_size)) * batch_size,
        np.ceil(1e8 / float(top_config.K_code * batch_size)) * batch_size
    ], np.int32)
    Simulation.LDPC_BP_MS_AWGN_test(code, channel, top_config, train_config,