Example #1
0
def _get_exp_design(path,
                    _val=namedtuple('_val',
                                    'ligand_name ligand_concentration time '
                                    'antibody_0 antibody_1 coords'.split())):
                    # _key=namedtuple('_key', ('plate', 'well'))):
                                    
    ret = NoClobberDict()
    ks = []
    ret = defaultdict(dict)
    for record in read_exp_design(path):
        plate = record.plate

        row = record.row
        column = record.column
        well = '%s%02d' % (row.upper(), int(column))
        # key = _key(plate, well)
        ks.append((plate, well))

        time = record.time__min_
        ligand_name = record.ligand
        ligand_concentration = record.concentration__ng_ml_
        ab0 = parse_antibody_string(record.primary_body1)
        ab1 = parse_antibody_string(record.primary_body2)
        ret[plate][well] = _val(ligand_name, ligand_concentration,
                                time, ab0, ab1, plate + well)

    assert len(ks) == len(set(ks))
    return dict(ret)
Example #2
0
def _get_exp_design(path,
                    _val=namedtuple(u'_val', u'treatment info'),
                    _treatment=namedtuple(u'_treatment',
                                          u'ligand_name ligand_conc'
                                          u'entration time antibodies'),
                    _antibody=namedtuple(u'_antibody',
                                         u'target species wavelength'),
                    _info=namedtuple(u'_info',
                                     u'replicate coords zone')):

                    # _key=namedtuple('_key', ('plate', 'well'))):
                                    
    ks = []
    replicate = defaultdict(int)
    platemap = defaultdict(lambda: defaultdict(dict))
    for record in read_exp_design(path):
        plate = record.plate
        try:
            well = record.well.upper()
            column = well[1:]
        except AttributeError:
            row = record.row
            column = record.column
            well = '%s%02d' % (row.upper(), int(column))

        # key = _key(plate, well)

        coords = (plate, well)
        zone = (plate if plate.startswith('GF')
                else plate + ('-L' if (int(column) - 1) < 6
                              else '-R'))
        ks.append(coords)

        time_ = record.time__min_
        ligand_name = record.ligand
        ligand_conc = record.concentration__ng_ml_
        primary_abs = (parse_antibody_string(record.primary_body1),
                       parse_antibody_string(record.primary_body2))
        secondary_abs = (parse_antibody_string(record.secondary_body1),
                         parse_antibody_string(record.secondary_body2))


        abs_ = []
        ws = set()
        for primary, secondary in zip(primary_abs, secondary_abs):
            ab_target, ab_species = primary
            assert ab_species == secondary[0]
            wavelength = secondary[2]
            assert wavelength not in ws
            ws.add(wavelength)
            abs_.append((wavelength,
                         _antibody(*(primary + (wavelength,)))))

        treatment = _treatment(ligand_name, ligand_conc, time_,
                               tuple(abs_))

        repl = replicate[treatment]
        replicate[treatment] += 1
        info = _info(repl, coords, zone)

        try:
            assert repl == int(record.replicate)
        except AttributeError:
            pass

        assert well not in platemap[plate]
        platemap[plate][well] = _val(treatment, info)

    assert len(ks) == len(set(ks))
    return dict(platemap)