Пример #1
0
def load_rational_designs():
    df = densiometry.load_cleavage_data_from_xlsx_dir('densiometry')
    df = densiometry.calc_mean_change(df)

    df = df.apply(name_to_strategy, axis='columns')
    df['strategy'] = pd.Categorical(df.strategy, [e.value for e in Strategy])
    df['domain'] = pd.Categorical(df.domain, [e.value for e in Domain])
    df['active'] = abs(df.mean_change) > 0.15
    df['sequence'] = df.apply(name_to_sequence, axis='columns')
    #df['aligned_sequence'] = align_sequences(df.sequence)

    df = discard_modified_aptamers(df)
    df = get_pretty_sequences(df)

    priority = [
        'align_group', 'strategy', 'algorithm', 'domain', 'earliest_date',
        'earliest_order'
    ]
    df = df.sort_values(priority).reset_index(drop=True)
    df['id'] = df.index.values + 1

    return df
Пример #2
0

def get_construct(x):
    names = {
        'on': 'pos',
        'off': 'neg',
        'mhf 30': r'\ligrnaF{}',
        'rxb 11,1': r'\ligrnaB{}',
    }
    return names[x]


args = docopt.docopt(__doc__)

# Parse the densiometry data.
df = densiometry.load_cleavage_data_from_xlsx_dir(DATA_DIR)
df = densiometry.calc_mean_change(df)

# Add NaNs for the experiments that didn't work.
df = df.append({'spacer': 'd9', 'design': 'on'}, ignore_index=True)

# Add a column for the names I want to display.
df = df[df.design.isin(DESIGN_ORDER)]
df['construct'] = df.design.apply(get_construct)

# Put the rows in the order I want to display them in.
spacer_order = densiometry.sort_spacers_by_activity(df, ['mhf 30', 'rxb 11,1'])
df['spacer'] = pd.Categorical(df.spacer, spacer_order)
df['design'] = pd.Categorical(df.design, DESIGN_ORDER)
df = df.sort_values(['spacer', 'design']).reset_index()
Пример #3
0
def calc_energy_from_row(row):
    spacer = sgrna_sensor.spacer(row.spacer).seq
    insert = inserts[row.design]
    return calc_energy(spacer, insert)


if args['<spacer>'] and args['<design>']:
    spacer = sgrna_sensor.spacer(args['<spacer>'],
                                 species=args['--species']).rna
    insert = inserts[args['<design>']]
    print(f"Spacer: {spacer}")
    print(f"Insert: {insert}")
    print(f"ΔG:     {calc_energy(spacer, insert)}")

else:
    df = densiometry.load_cleavage_data_from_xlsx_dir('densiometry')
    df = densiometry.calc_mean_change(df)

    # Drop all the controls
    df = df[df.design.isin(inserts.keys())]

    # Calculate the minimum free energy (MFE) for binding between the spacer
    # and the aptamer insert.
    df['binding_energy'] = df.apply(calc_energy_from_row, axis='columns')

    def plot_design(design, label, color):  #
        i = df.design == design
        x = 100 * abs(
            df[i].max_change if args['--max-change'] else df[i].mean_change)
        y = df[i].binding_energy
        m, b, R, p, err = linregress(x, y)