コード例 #1
0
ファイル: Output.py プロジェクト: SES591/RNA_Cooperators
def final_data(exp, sequences, mass, runtime):
    """Output final run statistics"""
    import Parameters

    """Write Polymer list to file"""
    filename = ('%s/%i_run_statistics.txt' % (Parameters.dirname, exp))

    
    file = open(filename, 'w')

    file.write("Run parameters \n")
    s = 'Total mass = ' + str(mass) + '\n'
    file.write(s)
    s = 'Length of Sequences = ' + str(Parameters.R_L) + '\n'
    file.write(s)
    s = 'kr = ' + str(Parameters.kr) + '\n'
    file.write(s)
    s = 'kh = ' + str(Parameters.kh) + '\n'
    file.write(s)
    s = 'km = ' + str(Parameters.km) + '\n'
    file.write(s)
    s = 'kc = ' + str(Parameters.kc) + '\n'
    file.write(s)
    s = 'ks = ' + str(Parameters.ks) + '\n'
    file.write(s)
    s = 'mu = ' + str(Parameters.mu) + '\n'
    file.write(s)
    s = 'k_ch = ' + str(Parameters.k_ch) + '\n'
    file.write(s)
    s = 'k_ca = ' + str(Parameters.k_ca) + '\n'
    file.write(s)
    s = 'k_cs = ' + str(Parameters.k_cs) + '\n'
    file.write(s)
    s = 'Run seed = ' + str(Parameters.run_seed) + '\n'
    #file.write(s)
    #s = 'Number of Steps = ' + str(Parameters.tot_step) + '\n' + '\n'
    
    
    file.write("Information about kMC run including run statistics: \n \n")

    file.write("Total run time = ")
    s= str(runtime) + ' sec'
    file.write(s)
    file.write('\n')
    file.write('\n')

    file.write("Number of replication events = ")
    s = str(Parameters.kr_events)
    file.write(s)
    file.write('\n')

    file.write("Number of error-prone replication events = ")
    s = str(Parameters.mr_events)
    file.write(s)
    file.write('\n')
    file.write('\n')

    file.write("Number of degradation events =  ")
    s = str(Parameters.kh_events)
    file.write(s)
    file.write('\n')

    file.write("Number of mutagenic events ")
    s = str(Parameters.km_events)
    file.write(s)
    file.write('\n')
    file.write('\n')

    file.write("Number of cross-over/recombination events ")
    s = str(Parameters.kc_events)
    file.write(s)
    file.write('\n')
    file.write('\n')

    file.write("Number of spontaneous assembly events ")
    s = str(Parameters.ks_events)
    file.write(s)
    file.write('\n')
    file.write('\n')

    file.write("Number of catalyzed recycling events ")
    s = str(Parameters.kch_events)
    file.write(s)
    file.write('\n')
    file.write('\n')

    file.write("Number of catalyzed recombination events ")
    s = str(Parameters.kca_events)
    file.write(s)
    file.write('\n')
    file.write('\n')

    file.write("Number of catalyzed assembly events ")
    s = str(Parameters.kcs_events)
    file.write(s)
    file.write('\n')
    file.write('\n')

    file.write("Final number of monomers = ")
    s = str(Parameters.Nmono)
    file.write(s)
    file.write('\n')

    file.write("Final number of polymers = ")
    s = str(Parameters.Npoly)
    file.write(s)
    file.write('\n')

    file.write("Null Replication events = ")
    s = str(Parameters.null_event)
    file.write(s)
    file.write('\n')

    file.close()

    ''' Save a list of all initial and final replicator composition at the end of the run '''
    initial_composition = [0, 0, 0, 0]
    surviving_composition = [0, 0, 0, 0]

    filename = ('%s/%i_surviving_species.dat' % (Parameters.dirname, exp))
    file = open(filename, 'w')
    
    for ID in range(len(sequences)):
        if sequences[ID].tot_count !=0:

            s = sequences[ID].sequence + '  ' +str(sequences[ID].seq_ID)
            surviving_composition = np.add(sequences[ID].tot_count*np.array(sequences[ID].seq_list), surviving_composition)
            file.write(s)
            file.write('\n')

    file.close()

    for ID in range(len(Parameters.initial_replicators)):
        initial_composition = np.add(Parameters.R_N*np.array(sequences[ID].seq_list), initial_composition)
    compositions = zip(initial_composition, surviving_composition)
    filename = ('%s/%i_compositions.dat' % (Parameters.dirname, exp))
    np.savetxt(filename, compositions)


    if Parameters.output_plots == True:
        import Plotting

        Plotting.output_plots(exp, sequences, Parameters.catalysts, Parameters.substrates)