예제 #1
0
 def update_droplet_generators(self):
     dgs = [DropletGenerator(name=u'DG #01'),
            DropletGenerator(name=u'DG #02'),
            DropletGenerator(name=u'DG #03'),
            DropletGenerator(name=u'DG #04'),
            DropletGenerator(name=u'DG #05'),
            DropletGenerator(name=u'DG #06'),
            DropletGenerator(name=u'DG #07'),
            DropletGenerator(name=u'DG #08'),
            DropletGenerator(name=u'DG #09'),
            DropletGenerator(name=u'DG #10'),
            DropletGenerator(name=u'DG #11'),
            DropletGenerator(name=u'DG #12'),
            DropletGenerator(name=u'DG #13'),
            DropletGenerator(name=u'DG #14'),
            DropletGenerator(name=u'DG #15'),
            DropletGenerator(name=u'DG #16'),
            DropletGenerator(name=u'DG #17'),
            DropletGenerator(id=101, name=u'Pilot #1'),
            DropletGenerator(id=102, name=u'Pilot #2'),
            DropletGenerator(id=103, name=u'Pilot #3'),
            DropletGenerator(id=104, name=u'Pilot #4'),
            DropletGenerator(id=105, name=u'Pilot #5'),
            DropletGenerator(id=201, name=u'Groove DG #1'),
            DropletGenerator(id=202, name=u'Groove DG #2'),
            DropletGenerator(id=203, name=u'Groove DG #3'),
            DropletGenerator(id=204, name=u'Groove DG #4')]
     
     for dg in dgs:
         db_dg = Session.query(DropletGenerator).filter_by(name=dg.name).first()
         if not db_dg:
             Session.add(dg)
     Session.commit()
예제 #2
0
 def update_dgs_used(self):
     dgu = [DGUsed(name=u'Unicorn'),
            DGUsed(name=u'Yeti'),
            DGUsed(name=u'Nessie')]
     
     for dgs in dgu:
         db_dgu = Session.query(DGUsed).filter_by(name=dgs.name).first()
         if not db_dgu:
             Session.add(dgs)
     Session.commit()
예제 #3
0
    def command(self):
        self.load_wsgi_app()

        projects = [Project(name=u'Beta Test',code=u'Beta'),
                    Project(name=u'Validation',code=u'Validation')]

        for project in projects:
            dp = Session.query(Project).filter_by(name=project.name).first()
            if not dp:
                Session.add(project)
            
        Session.commit()
예제 #4
0
    def command(self):
        app = self.load_wsgi_app()

        # enforce name.ini
        if len(self.args) < 2:
            raise ValueError, self.__class__.usage
        
        name = self.args[0]

        ag = AnalysisGroup(name=name)
        Session.add(ag)
        Session.commit()
        print "Created analysis group %s with id=%s" % (ag.name, ag.id)
예제 #5
0
 def update_dr_groups(self):
     dr_groups = [DRGroup(name='Apps DRs', active=True),
                  DRGroup(name='Groove DRs', active=True),
                  DRGroup(name='Golden DRs', active=True),
                  DRGroup(name='Rev Z DRs', active=True),
                  DRGroup(name='Custom DRs', active=True),
                  DRGroup(name='DNA 2.0', active=True),
                  DRGroup(name='Retired', active=False)]
     for group in dr_groups:
         drg = Session.query(DRGroup).filter_by(name=group.name).first()
         if not drg:
             Session.add(group)
     Session.commit()
예제 #6
0
    def update_physical_plates(self):
        pps = [PhysicalPlate(name='Eppendorf twin.tec PCR plate 96'),
               PhysicalPlate(name='Bio-Rad Hard-Shell White/Clear'),
               PhysicalPlate(name='Bio-Rad Hard-Shell Red/Clear'),
               PhysicalPlate(name='Bio-Rad Hard-Shell Black/Clear'),
               PhysicalPlate(name='Bio-Rad Hard-Shell Yellow/Clear'),
               PhysicalPlate(name='Bio-Rad Hard-Shell Blue/Clear'),
               PhysicalPlate(name='Bio-Rad Hard-Shell Green/Clear')]

        for pp in pps:
            dbpp = Session.query(PhysicalPlate).filter_by(name=pp.name).first()
            if not dbpp:
                Session.add(pp)
        Session.commit()
예제 #7
0
 def update_thermal_cyclers(self):
     tcs = [ThermalCycler(name=u'Eppendorf 1'),
            ThermalCycler(name=u'Eppendorf 2'),
            ThermalCycler(name=u'Eppendorf 3'),
            ThermalCycler(name=u'Eppendorf 4'),
            ThermalCycler(name=u'Eppendorf 5'),
            ThermalCycler(name=u'Eppendorf 6'),
            ThermalCycler(name=u'Bio-Rad T100 1'),
            ThermalCycler(name=u'Bio-Rad C1000 1'),
            ThermalCycler(name=u'Eppendorf 8')]
     
     for tc in tcs:
         db_tc = Session.query(ThermalCycler).filter_by(name=tc.name).first()
         if not db_tc:
             Session.add(tc)
     Session.commit()
예제 #8
0
 def _to_python(self, value, state):
     # value is gonna be a dict
     for name, spec in self.spec.items():
         obj, id_col, disp_col, additional_cols = spec
         dict_val = value.get(name)
         if not dict_val:
             continue
         if dict_val and dict_val.isdigit():
             if Session.query(obj).filter(getattr(obj, id_col) == int(dict_val)).one():
                 continue
         additional_cols[disp_col] = dict_val
         newobj = obj(**additional_cols)
         Session.add(newobj)
         Session.commit()
         value[name] = getattr(newobj, id_col)
     return value
예제 #9
0
 def update_plate_types(self):
     plate_types = [PlateType(name=u'CNV',code=u'bcnv'),
                    PlateType(name=u'Dye',code=u'bdye'),
                    PlateType(name=u'Singleplex',code=u'bsplex'),
                    PlateType(name=u'Duplex',code=u'bdplex'),
                    PlateType(name=u'FP/FN',code=u'bfpfn'),
                    PlateType(name=u'HighDNR',code=u'bdnr'),
                    PlateType(name=u'RED',code=u'bred'),
                    PlateType(name=u'Other',code=u'bapp'),
                    PlateType(name=u'Exception', code=u'bexp'),
                    PlateType(name=u'Dye v2',code=u'bdye2'),
                    PlateType(name=u'EventCount', code=u'betaec'),
                    PlateType(name=u'Carryover (ENG)', code=u'bcarry'),
                    PlateType(name=u'4-Well ColorComp (ENG)', code=u'bcc'),
                    PlateType(name=u'Cal Verification (CSFV)', code=u'fvtitr'),
                    PlateType(name=u'4-Well ColorComp (MFG)', code=u'mfgcc'),
                    PlateType(name=u'Dye Calibration', code=u'scc'),
                    PlateType(name=u'Fluidics Verification', code=u'mfgco'),
                    PlateType(name=u'FAM/VIC Titration (Groove)', code=u'gfv'),
                    PlateType(name=u'EvaGreen DNR (Staph/high BG)', code=u'2x10'),
                    PlateType(name=u'DG Pressure Volume', code=u'dgvol'),
                    PlateType(name=u'CNV (Groove)', code=u'gcnv'),
                    PlateType(name=u'EvaGreen DNR (Staph/no BG)', code=u'gdnr'),
                    PlateType(name=u'EvaGreen Assay DNA Load', code=u'gload'),
                    PlateType(name=u'EvaGreen DNR (RNaseP)', code=u'egdnr'),
                    PlateType(name=u'FAM350 no DNA', code=u'fam350'),
                    PlateType(name=u'FAM350 DNA Load', code=u'fm350l'),
                    PlateType(name=u'Auto Validation', code=u'av'),
                    PlateType(name=u'Qx200 DNR validation', code=u'dnr200'),
                    PlateType(name=u'Qx200 Duplex validation', code=u'dplex200'),
                    PlateType(name=u'Qx200 Broad Panel EG val', code=u'eg200'),
                    PlateType(name=u'Qx200 Broad Panel TQ val', code=u'tq200'),
                    PlateType(name=u'Qx200 CNV validation', code=u'cnv200'),
                    PlateType(name=u'Qx200 EvaGreen CNV val', code=u'cnv200e'),
                    PlateType(name=u'Probe EventCount', code=u'probeec'),
                    PlateType(name=u'Eva EventCount', code=u'evaec')
             ]
     
     for pt in plate_types:
         dpt = Session.query(PlateType).filter_by(code=pt.code).first()
         if not dpt:
             Session.add(pt)
         elif pt.name != dpt.name:
             dpt.name = pt.name
     Session.commit()
예제 #10
0
    def command(self):
        app = self.load_wsgi_app()

        print "Clearing NEB buffer tables..."
        # make this reversible...
        neb = Session.query(Vendor).filter_by(name='NEB').first()
        if neb:
            enzymes = neb.enzymes
            for enz in enzymes:
                Session.delete(enz)
            neb.enzymes = []

        Session.commit()

        # now go with the vendors (question: is it vendor enzyme or enzyme
        # in general subject to methylation)
        source = NEBEnzymeSource()
        if not neb:
            neb = Vendor(name="NEB", website="http://www.neb.com")
            Session.add(neb)
            Session.commit()

        try:
            for name, page_uri in source.iter_restriction_enzymes():
                print "Processing %s..." % name
                enz = Session.query(Enzyme).filter_by(name=name).first()
                if not enz:
                    enz = Enzyme(name=name)
                    Session.add(enz)
            
                details = source.enzyme_details(name, page_uri)
                if details:
                    enz.cutseq = details['sequence']
                    enz.methylation = details['methylation_sensitivity']

                    buf = Session.query(Buffer).filter_by(name=details['buffer']).first()
                    if not buf:
                        buf = Buffer(name=details['buffer'])
                        Session.add(buf)

                    ve = VendorEnzyme(enzyme=enz, vendor=neb, buffer=buf)
                    ve.unit_cost_1 = details.get('unit_cost_1', None)
                    ve.unit_cost_2 = details.get('unit_cost_2', None)
                    ve.unit_serial_1 = details.get('unit_serial_1', None)
                    ve.unit_serial_2 = details.get('unit_serial_2', None)
                    ve.vendor_serial = details.get('vendor_serial', None)
                    if ve.unit_cost_1 is not None:
                        Session.add(ve)
                # save per enzyme, interruption should be logged
                Session.commit()
        except IOError, e:
            Session.rollback()
            print "Could not communicate with NEB server"
예제 #11
0
def update_reprocess_analysis_group_data(analysis_group, reprocess_config, config, logger):
    """
        Given an analysis_gropu and repocessor, relaod each into qtools
    """

    update_status = 0

    plates = analysis_group.plates
    # remove old metrics if present
    for plate in plates:
        pm = [pm for pm in plate.metrics if pm.reprocess_config_id == reprocess_config.id]
        # should only be of length 1, but just to be safe
        for p in pm:
            Session.delete(p)

    # TODO: how to make this whole operation transactional
    Session.commit()

    plate_ids = [plate.id for plate in plates]

    data_root = config['qlb.reprocess_root']
    file_source = QLPReprocessedFileSource(data_root, reprocess_config)

    for id in plate_ids:
        dbplate = dbplate_tree(id)
        # TODO: right abstraction?
        plate_path = file_source.full_path(analysis_group, dbplate)

        print "Reading/updating metrics for %s" % plate_path
        qlplate = get_plate(plate_path)
        if not qlplate:
            print "Could not read plate: %s" % plate_path
            continue

        plate_metrics = get_beta_plate_metrics(dbplate, qlplate, reprocess_config)
        Session.add(plate_metrics)
        del qlplate

    Session.commit()

    return update_status
예제 #12
0
    def update_system_versions(self):
        """ Double check if values are inserted correctly if you re-enable this. mysql seesm to auto inc when id = 0....
        """
        #system_versions = [SystemVersion(id=-1 ,type=u'QX100',desc=u'Unknown Hardware version'),
        #                   SystemVersion(id=0  ,type=u'QX100',desc=u'QX100 - HW Rev A/B'),
        system_versions = [SystemVersion(id=1  ,type=u'QX100',  desc=u'QX100 - HW Rev A/B bigger detector cap differences'),
                           SystemVersion(id=2  ,type=u'QX100',  desc=u'QX100 - HW Rev C'),
                           SystemVersion(id=3  ,type=u'QX150',  desc=u'QX150 - HW Rev Z Upgrade'),
                           SystemVersion(id=4  ,type=u'QX200',  desc=u'QX200 - HW Rev Z'),
                           SystemVersion(id=5  ,type=u'QX201',  desc=u'QX200 - HW with BR built Detector'),
			   SystemVersion(id=6  ,type=u'QX150L', desc=u'QX150 - HW Rev Z Upgrade with LED'),
                           SystemVersion(id=7  ,type=u'QX201L', desc=u'QX201 - HW with BR built LED Detector'),
                           SystemVersion(id=200,type=u'QX200',  desc=u'QX200 - Pre-Beta HW')]
        for sv in system_versions:
            dbsv = Session.query(SystemVersion).filter_by(id=sv.id).first()
            if not dbsv:
                Session.add(sv)
            else:
                if (dbsv.type != sv.type):
                    dbsv.type = sv.type
                if( dbsv.desc != sv.desc):
                    dbsv.desc = sv.desc

        Session.commit()
예제 #13
0
    def command(self):
        from qtools.constants.job import JOB_ID_PROCESS_ASSAY
        from qtools.messages.sequence import ProcessSequenceGroupMessage

        app = self.load_wsgi_app()
        mgr = create_manager(app.config)

        if len(self.args) < 3:
            raise ValueError, self.usage

        infile = open(self.args[-3], 'r')
        mode = self.args[-2].lower()

        #read in liens
        lines = [l for l in infile]
        infile.close()

        assay_line_dict = defaultdict(lambda: defaultdict(lambda: None))
        for line in lines:
            toks = self.__split_line(line)
            name = self.__assay_name(toks)
            if not name:
                continue
            comp = self.__assay_component(toks)
            seq = self.__assay_sequence(toks)
            assay_line_dict[name][comp] = seq

        Owner = Session.query(Person).filter_by(name_code=u'NielsK').first()

        for k, v in sorted(assay_line_dict.items()):
            sg = SequenceGroup(name=k,
                               owner_id=Owner.id,
                               gene=v['gene'],
                               kit_type = SequenceGroup.CHEMISTRY_TYPE_TAQMAN,
                               type = {'red': SequenceGroup.ASSAY_TYPE_RED,
                                       'cnv': SequenceGroup.ASSAY_TYPE_CNV,
                                       'snp': SequenceGroup.ASSAY_TYPE_SNP,
                                       'gex': SequenceGroup.ASSAY_TYPE_GEX,
                                       'abs': SequenceGroup.ASSAY_TYPE_ABS}[mode],
                               notes = mode + ' Content Project assay design. ' + \
                                       'Imported from %s' % os.path.basename(self.args[-3]),
                               status = v['status'],
                               analyzed = False)
            fps = Sequence(sequence=v['for'],
                           strand='+')
            rps = Sequence(sequence=v['rev'],
                           strand='+')
            if v['taq']:
                ps = Sequence(sequence=v['taq'],
                              strand='+')

            sg.forward_primers.append(SequenceGroupComponent(
                                        sequence=fps,
                                        role=SequenceGroupComponent.FORWARD_PRIMER,
                                        barcode_label='%s_FP1' % k[:12],
                                        primary=True,
                                        order=0))
            sg.reverse_primers.append(SequenceGroupComponent(
                                        sequence=rps,
                                        role=SequenceGroupComponent.REVERSE_PRIMER,
                                        barcode_label='%s_RP1' % k[:12],
                                        primary=True,
                                        order=0))
            if v['taq']:
                sg.probes.append(SequenceGroupComponent(
                                            sequence=ps,
                                            role=SequenceGroupComponent.PROBE,
                                            barcode_label='%s_P1FM' % k[:11],
                                            primary=True,
                                            order=0,
                                            dye=v['dye'],
                                            quencher='IABkFQ'))
            
            print "Committing %s..." % k
            Session.add(sg)
            Session.commit()
            job_queue = mgr.jobqueue()

            job = job_queue.add(JOB_ID_PROCESS_ASSAY, ProcessSequenceGroupMessage(sg.id))
            sg.pending_job_id = job.id
            Session.commit()
예제 #14
0
 def setup_vendors(self):
     NEB = Vendor(name=u'NEB')
     Session.add(NEB)
     Session.commit()
     
     Session.commit()
예제 #15
0
    def process_plate(self, qlplate, plate_metric):

        dbplate = dbplate_tree(plate_metric.plate_id)
        plate_metrics = get_beta_plate_metrics(dbplate, qlplate)
        Session.add(plate_metrics)
예제 #16
0
 def update_people(self):
     people = [Person(first_name=u'Adam', last_name=u'Bemis', name_code=u'AdamB'),
               Person(first_name=u'Adam', last_name=u'Lowe', name_code=u'AdamL'),
               Person(first_name=u'Adam', last_name=u'McCoy', name_code=u'AdamM'),
               Person(first_name=u'Amer', last_name=u'El-Hage', name_code=u'AmerE'),
               Person(first_name=u'Amy', last_name=u'Hiddessen', name_code=u'AmyH'),
               Person(first_name=u'Andi', last_name=u'Kleissner', name_code=u'AndiK'),
               Person(first_name=u'Austin', last_name=u'So', name_code=u'AustinS'),
               Person(first_name=u'Ben', last_name=u'Hindson', name_code=u'BenH'),
               Person(first_name=u'Phil', last_name=u'Belgrader', name_code=u'PhilB'),
               Person(first_name=u'Bill', last_name=u'Colston', name_code=u'BillC'),
               Person(first_name=u'Bin', last_name=u'Zhang', name_code=u'BinZ'),
               Person(first_name=u'Camille', last_name=u'Troup', name_code=u'CamilleT'),
               Person(first_name=u'Cher', last_name=u'Zhang', name_code=u'CherZ'),
               Person(first_name=u'Chris', last_name=u'Hindson', name_code=u'ChrisH'),
               Person(first_name=u'Claudia', last_name=u'Litterst', name_code=u'ClaudiaL'),
               Person(first_name=u'Crystal', last_name=u'Jain', name_code=u'CrystalJ'),
               Person(first_name=u'Dave', last_name=u'Mukhopadhyay', name_code=u'DaveM'),
               Person(first_name=u'Dave', last_name=u'Stumbo', name_code=u'DaveS'),
               Person(first_name=u'David', last_name=u'Sally', name_code=u'DavidS'),
               Person(first_name=u'Dawne', last_name=u'Shelton', name_code=u'DawneS'),
               Person(first_name=u'Dean', last_name=u'Wittmann', name_code=u'DeanW'),
               Person(first_name=u'Debkishore', last_name=u'Mitra', name_code=u'DebM'),
               Person(first_name=u'Dianna', last_name=u'Maar', name_code=u'DiannaM'),
               Person(first_name=u'Dimitri', last_name=u'Skvortsov', name_code=u'DSkvortsov'),
               Person(first_name=u'Don', last_name=u'Masquelier', name_code=u'DonM'),
               Person(first_name=u'Duc', last_name=u'Do', name_code=u'DucD'),
               Person(first_name=u'Douglas', last_name=u'Greiner', name_code=u'DougG'),
               Person(first_name=u'Eli', last_name=u'Hefner', name_code=u'EliH'),
               Person(first_name=u'Elise', last_name=u'Bullock', name_code=u'EliseB'),
               Person(first_name=u'Erin', last_name=u'Steenblock', name_code=u'ErinS'),
               Person(first_name=u'Gayathri', last_name=u'Ramaswamy', name_code=u'GayathriR'),
               Person(first_name=u'Geoff', last_name=u'McDermott', name_code=u'GeoffM'),
               Person(first_name=u'George', last_name=u'Carman', name_code=u'GeorgeC'),
               Person(first_name=u'George', last_name=u'Karlin-Neumann', name_code=u'GeorgeKN'),
               Person(first_name=u'Irene', last_name=u'Castillo', name_code=u'IreneC'),
               Person(first_name=u'Jack', last_name=u'Regan', name_code=u'JackR'),
               Person(first_name=u'Jeff', last_name=u'Mellen', name_code=u'JeffM'),
               Person(first_name=u'Jen', last_name=u'Berman', name_code=u'JenB'),
               Person(first_name=u'Jeremy', last_name=u'Agresti', name_code=u'JeremyA'),
               Person(first_name=u'Jerry', last_name=u'Hurst', name_code=u'JerryH'),
               Person(first_name=u'Joh', last_name=u'Wong', name_code=u'JohW'),
               Person(first_name=u'Johannes', last_name=u'Schrankenmueller', name_code=u'JohannesS'),
               Person(first_name=u'John', last_name=u'Dzenitis', name_code=u'JohnD'),
               Person(first_name=u'Jon', last_name=u'Petersen', name_code=u'JonP'),
               Person(first_name=u'Joshua', last_name=u'Mopas', name_code=u'JoshuaM'),
               Person(first_name=u'Kapil', last_name=u'Bajaj', name_code=u'KapilB'),
               Person(first_name=u'Keith', last_name=u'Hamby', name_code=u'KeithH'),
               Person(first_name=u'Kevin', last_name=u'Ness', name_code=u'KevinN'),
               Person(first_name=u'Klint', last_name=u'Rose', name_code=u'KlintR'),
               Person(first_name=u'Laura', last_name=u'Gilson', name_code=u'LauraG'),
               Person(first_name=u'Leanne', last_name=u'Javier', name_code=u'LeanneJ'),
               Person(first_name=u'Luc', last_name=u'Bousse', name_code=u'LucB'),
               Person(first_name=u'Luz', last_name=u'Montesclaros', name_code=u'LuzM'),
               Person(first_name=u'Maria', last_name=u'Dona', name_code=u'MariaD'),
               Person(first_name=u'Mary', last_name=u'Ma', name_code=u'MaryM'),
               Person(first_name=u'Mei', last_name=u'Ng', name_code=u'MeiN'),
               Person(first_name=u'Mike', last_name=u'Hodel', name_code=u'MikeH'),
               Person(first_name=u'Nestor', last_name=u'Castillo', name_code=u'NestorC'),
               Person(first_name=u'Nia', last_name=u'Charrington', name_code=u'NiaC'),
               Person(first_name=u'Nick', last_name=u'Erndt', name_code=u'NickE'),
               Person(first_name=u'Nick', last_name=u'Heredia', name_code=u'NickH'),
               Person(first_name=u'Niels', last_name=u'Klitgord', name_code=u'NielsK'),
               Person(first_name=u'Pallavi', last_name=u'Shah', name_code=u'PallaviS'),
               Person(first_name=u'Paul', last_name=u'Wyatt', name_code=u'PaulW'),
               Person(first_name=u'Pingchen', last_name=u'Chen', name_code=u'PingchenC'),
               Person(first_name=u'Raffi', last_name=u'Novosel', name_code=u'RaffiN'),
               Person(first_name=u'Ryan', last_name=u'Koehler', name_code=u'RyanK'),
               Person(first_name=u'Sam', last_name=u'Marrs', name_code=u'SamM'),
               Person(first_name=u'Samantha', last_name=u'Cooper', name_code=u'SamanthaC'),
               Person(first_name=u'Sean', last_name=u'Cater', name_code=u'SeanC'),
               Person(first_name=u'Serge', last_name=u'Saxonov', name_code=u'SergeS'),
               Person(first_name=u'Shawn', last_name=u'Hodges', name_code=u'ShawnH'),
               Person(first_name=u'Sherman', last_name=u'Cheng', name_code=u'ShermanC'),
               Person(first_name=u'Shenglong', last_name=u'Wang', name_code=u'ShenglongW'),
               Person(first_name=u'Stefano', last_name=u'Schiaffino', name_code=u'StefanoS'),
               Person(first_name=u'Steve', last_name=u'Romine', name_code=u'SteveR'),
               Person(first_name=u'Steven', last_name=u'Vanbuskirk', name_code=u'StevenV'),
               Person(first_name=u'Tesa', last_name=u'Abad', name_code=u'TesaA'),
               Person(first_name=u'Tina', last_name=u'Legler', name_code=u'TinaL'),
               Person(first_name=u'Tony', last_name=u'Makarewicz', name_code=u'TonyM'),
               Person(first_name=u'Trey', last_name=u'Cauley', name_code=u'TreyC'),
               Person(first_name=u'Tyler', last_name=u'Kitano', name_code=u'TylerK'),
               Person(first_name=u'Vashishtha', last_name=u'Patil', name_code=u'VashishthaP'),
               Person(first_name=u'Wei', last_name=u'Yang', name_code=u'WeiY'),
               Person(first_name=u'Yann', last_name=u'Jouvenot', name_code=u'YannJ'),
               Person(first_name=u'Yaqi', last_name=u'Wang', name_code=u'YaqiW')]
     
     for person in people:
         if not Session.query(Person).filter_by(name_code=person.name_code).first():
             Session.add(person)
     
     Session.commit()
예제 #17
0
    def command(self):
        app = self.load_wsgi_app()

        # enforce config.ini
        if len(self.args) < 2:
            raise ValueError, self.__class__.usage

        analysis_group_id = int(self.args[0])
        if len(self.args) == 3:
            reprocess_config = Session.query(ReprocessConfig).filter_by(code=self.args[1]).one()
            reprocess_config_id = reprocess_config.id
        else:
            reprocess_config = None
            reprocess_config_id = None

        analysis_group = Session.query(AnalysisGroup).get(analysis_group_id)
        if not analysis_group:
            raise ValueError, "No analysis group for id %s" % analysis_group_id

        plates = analysis_group.plates
        # todo: add in reprocess config id
        for plate in plates:
            pm = [pm for pm in plate.metrics if pm.reprocess_config_id == reprocess_config_id]
            # should only be of length 1, but just to be safe
            for p in pm:
                Session.delete(p)

        # TODO: how to make this whole operation transactional
        Session.commit()

        # this is a little tricky in the ORM world.  only get the
        # ids of the analysis_group plates, so that you can load the plate
        # and all the necessary children
        plate_ids = [plate.id for plate in plates]

        if reprocess_config_id is None:
            storage = QLStorageSource(app.config)

            for id in plate_ids:
                dbplate = dbplate_tree(id)
                plate_path = storage.plate_path(dbplate)
                print "Reading/updating metrics for %s" % plate_path
                qlplate = get_plate(plate_path)
                if not qlplate:
                    print "Could not read plate: %s" % plate_path
                    continue

                plate_metrics = get_beta_plate_metrics(dbplate, qlplate)
                Session.add(plate_metrics)
                del qlplate
        else:
            data_root = app.config['qlb.reprocess_root']
            file_source = QLPReprocessedFileSource(data_root, reprocess_config)

            for id in plate_ids:
                dbplate = dbplate_tree(id)
                # TODO: right abstraction?
                plate_path = file_source.full_path(analysis_group, dbplate)

                print "Reading/updating metrics for %s" % plate_path
                qlplate = get_plate(plate_path)
                if not qlplate:
                    print "Could not read plate: %s" % plate_path
                    continue

                plate_metrics = get_beta_plate_metrics(dbplate, qlplate, reprocess_config)
                Session.add(plate_metrics)
                del qlplate


        Session.commit()
예제 #18
0
 def update_box2s(self):
     # requires migration 24
     boxes = [Box2(name=u'Alpha 01',code=u'a01', os_name='QUANTAALPHA01', src_dir="Box 2 Alpha 01"),
              Box2(name=u'Alpha 02',code=u'a02', os_name='QUANTAALPHA02', src_dir="Box 2 Alpha 02"),
              Box2(name=u'Alpha 03',code=u'a03', os_name='QUANTAALPHA03', src_dir="Box 2 Alpha 03"),
              Box2(name=u'Alpha 04',code=u'a04', os_name='QUANTAALPHA04', src_dir="Box 2 Alpha 04"),
              Box2(name=u'Alpha 05',code=u'a05', os_name='QUANTAALPHA05', src_dir="Box 2 Alpha 05"),
              Box2(name=u'Alpha 06',code=u'a06', os_name='QUANTAALPHA06', src_dir="Box 2 Alpha 06"),
              Box2(name=u'Alpha 07',code=u'a07', os_name='QUANTAALPHA07', src_dir="Box 2 Alpha 07"),
              Box2(name=u'Beta Bielas',code=u'b00', os_name='QUANTABETA00', src_dir="Box 2 Beta Bielas/Bielas Data"),
              Box2(name=u'Beta 01',code=u'b01', os_name='QUANTABETA01', src_dir="DR Beta 01"),
              Box2(name=u'Beta 02',code=u'b02', os_name='QUANTABETA02', src_dir="DR Beta 02"),
              Box2(name=u'Beta 03',code=u'b03', os_name='QUANTABETA03', src_dir="DR Beta 03"),
              Box2(name=u'Beta 04',code=u'b04', os_name='QUANTABETA04', src_dir="DR Beta 04"),
              Box2(name=u'Beta 05',code=u'b05', os_name='QUANTABETA05', src_dir="DR Beta 05"),
              Box2(name=u'Beta 06',code=u'b06', os_name='QUANTABETA06', src_dir="DR Beta 06"),
              Box2(name=u'Beta 07',code=u'b07', os_name='QUANTABETA07', src_dir="DR Beta 07"),
              Box2(name=u'Beta 08',code=u'b08', os_name='QUANTABETA08', src_dir="DR Beta 08"),
              Box2(name=u'Beta 09',code=u'b09', os_name='QUANTABETA09', src_dir="DR Beta 09"),
              Box2(name=u'Beta 10',code=u'b10', os_name='QUANTABETA10', src_dir="DR Beta 10"),
              Box2(name=u'Beta 11',code=u'b11', os_name='QUANTABETA11', src_dir="DR Beta 11"),
              Box2(name=u'Beta 12',code=u'b12', os_name='QUANTABETA12', src_dir="DR Beta 12"),
              Box2(name=u'Beta Tewari',code=u'bt', src_dir="Box 2 Beta Tewari/Tewari Data"),
              Box2(name=u'Beta Snyder',code=u'bs', src_dir="Box 2 Beta Snyder/Snyder data"),
              Box2(name=u'Beta Roche',code=u'br', src_dir="Box 2 Beta Roche/Roche Data"),
              Box2(name=u'Beta NMI',code=u'bn', src_dir="Box 2 Beta NMI/NMI Data"),
              Box2(name=u'Beta Harvard',code=u'bh', src_dir='DR Harvard/Harvard Data'),
              Box2(name=u'Beta Belgrader', code=u'bb', src_dir='DR Phil/Phil Data'),
              Box2(name=u'RevZ Bielas', code=u'zb', src_dir='RevZ Bielas'),
              Box2(name=u'ENG 001',code=u'e001', src_dir="DR ENG001"),
              Box2(name=u'ENG 002',code=u'e002', src_dir="DR ENG002"),
              Box2(name=u'ENG 003',code=u'e003', src_dir="DR ENG003"),
              Box2(name=u'ENG 10017',code=u'e10017', src_dir="DR ENG 10017"),
              Box2(name=u'GXD 10021',code=u'e10021', src_dir="DR GXD 10021"),
              Box2(name=u'GXD 10027',code=u'e10027', src_dir="DR GXD 10027"),
              Box2(name=u'ENG 10047',code=u'e10047', src_dir="DR ENG 10047"),
              Box2(name=u'Prod 10001',code=u'p10001', src_dir="DR 10001", fileroot="prod"),
              Box2(name=u'Prod 10002',code=u'p10002', src_dir="DR 10002", fileroot="prod"),
              Box2(name=u'Prod 10003',code=u'p10003', src_dir="DR 10003", fileroot="prod"),
              Box2(name=u'Prod 10004',code=u'p10004', src_dir="DR 10004", fileroot="prod"),
              Box2(name=u'Prod 10005',code=u'p10005', src_dir="DR 10005", fileroot="prod"),
              Box2(name=u'Prod 10006',code=u'p10006', src_dir="DR 10006", fileroot="prod"),
              Box2(name=u'Prod 10007',code=u'p10007', src_dir="DR 10007", fileroot="prod"),
              Box2(name=u'QuantaAwesome Sr.', code=u'qa1', src_dir="DR-DG-QC Integration"),
              Box2(name=u'QuantaAwesome Jr.',code=u'qa2', src_dir='DR-DG-QC Integration2'),
              Box2(name=u'RevC Alpha 002',code=u'c002', os_name='ALPHAC002', src_dir="DR Alpha C 002"),
              Box2(name=u'RevC Alpha 003',code=u'c003', os_name='ALPHAC003', src_dir="DR Alpha C 003"),
              Box2(name=u'RevC Beta 001',code=u'c101', os_name='BETAC001', src_dir="DR Beta C 001"),
              Box2(name=u'RevC Beta 002',code=u'c102', os_name='BETAC002', src_dir="DR Beta C 002"),
              Box2(name=u'RevC Beta 003',code=u'c103', os_name='BETAC003', src_dir="DR Beta C 003"),
              Box2(name=u'RevC ENG 001',code=u'c201', os_name='ENGC001', src_dir="DR ENG C 001"),
              Box2(name=u'RevC ENG 002',code=u'c202', os_name='ENGC002', src_dir="DR ENG C 002"),
              Box2(name=u'RevZ Beta 001',code=u'z001', os_name='ENGZ001', src_dir="DR RevZ Beta 001"),
              Box2(name=u'RevZ Beta 002',code=u'z002', os_name='ENGZ002', src_dir="DR RevZ Beta 002"),
              Box2(name=u'RevZ Beta 003',code=u'z003', os_name='ENGZ003', src_dir="DR RevZ Beta 003"),
              Box2(name=u'RevZ Beta 004',code=u'z004', os_name='ENGZ004', src_dir="DR RevZ Beta 004"),
              Box2(name=u'RevZ Beta 005',code=u'z005', os_name='ENGZ005', src_dir="DR RevZ Beta 005"),
              Box2(name=u'RevZ Beta 006',code=u'z006', os_name='ENGZ006', src_dir="DR RevZ Beta 006"),
              Box2(name=u'RevZ Beta 011',code=u'z011', os_name='ENGZ011', src_dir="DR RevZ Beta 011"),
              Box2(name=u'RevZ Beta 012',code=u'z012', os_name='ENGZ012', src_dir="DR RevZ Beta 012"),
              Box2(name=u'RevZ Beta 013',code=u'z013', os_name='ENGZ013', src_dir="DR RevZ Beta 013"),
              Box2(name=u'RevZ Beta 014',code=u'z014', os_name='ENGZ014', src_dir="DR RevZ Beta 014"),
              Box2(name=u'Simulated 001',code=u's01', os_name='SIMUL001', src_dir="DR Simulated 001")]
     
     for box in boxes:
         dbox = Session.query(Box2).filter_by(code=box.code).first()
         if not dbox:
             Session.add(box)
         else:
             if dbox.name != box.name:
                 dbox.name = box.name
             if not hasattr(dbox, 'os_name') or dbox.os_name != box.os_name:
                 dbox.os_name = box.os_name
             if not hasattr(dbox, 'src_dir') or dbox.src_dir != box.src_dir:
                 dbox.src_dir = box.src_dir
         
     Session.commit()