Пример #1
0
class TestKB(KBObjectCreator):

  def __init__(self, name):
    super(TestKB, self).__init__(name)
    self.kill_list = []

  def setUp(self):
    logger.info('start setup')
    self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)
    logger.info('done with setup')

  def tearDown(self):
    logger.info('start tear-down')
    self.kill_list.reverse()
    for x in self.kill_list:
      self.kb.delete(x)
    self.kill_list = []
    logger.info('done with tear-down')

  def create_archetype_record(self):
    terminology = 'terminology://apps.who.int/classifications/apps/'
    term = terminology + 'gE10.htm#E10'
    archetype = 'openEHR-EHR-EVALUATION.problem-diagnosis.v1'
    field = 'at0002.1'
    rec = {field : term}
    selector = ('(archetype=="%s")&(field=="%s")&(svalue=="%s")'
                % (archetype, field, term))
    return archetype, rec, selector

  def test_ehr_record(self):
    logger.info('creating ActionOnIndividual')
    conf, action = self.create_action_on_individual()
    self.kill_list.append(action.save())
    logger.info('done creating ActionOnIndividual')
    archetype, fields, selector = self.create_archetype_record()
    # FIXME there should be a function for this...
    timestamp = int(time.time() * 1000)
    self.kb.add_ehr_record(action, timestamp, archetype, fields)
    rs = self.kb.get_ehr_records(selector)
    individual = action.target
    individual.reload()
    self.assertTrue(len(rs) > 0)
    not_found = True
    for r in rs:
      for k in ['a_id', 'i_id', 'timestamp', 'archetype', 'fields']:
        self.assertTrue(k in r)
      if r['a_id'] == action.id:
        not_found = False
        self.assertEqual(r['i_id'], individual.id)
        self.assertEqual(r['timestamp'], timestamp)
        self.assertEqual(r['archetype'], archetype)
        nfields = r['fields']
        self.assertTrue(len(nfields) >= len(fields))
        for k in fields:
          self.assertTrue(k in nfields)
          self.assertEqual(nfields[k], fields[k])
        break
    else:
      self.assertTrue(not_found)
Пример #2
0
class TestKB(KBObjectCreator):
    def __init__(self, name):
        super(TestKB, self).__init__(name)
        self.kill_list = []

    def setUp(self):
        logger.info('start setup')
        self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)
        logger.info('done with setup')

    def tearDown(self):
        logger.info('start tear-down')
        self.kill_list.reverse()
        for x in self.kill_list:
            self.kb.delete(x)
        self.kill_list = []
        logger.info('done with tear-down')

    def create_archetype_record(self):
        terminology = 'terminology://apps.who.int/classifications/apps/'
        term = terminology + 'gE10.htm#E10'
        archetype = 'openEHR-EHR-EVALUATION.problem-diagnosis.v1'
        field = 'at0002.1'
        rec = {field: term}
        selector = ('(archetype=="%s")&(field=="%s")&(svalue=="%s")' %
                    (archetype, field, term))
        return archetype, rec, selector

    def test_ehr_record(self):
        logger.info('creating ActionOnIndividual')
        conf, action = self.create_action_on_individual()
        self.kill_list.append(action.save())
        logger.info('done creating ActionOnIndividual')
        archetype, fields, selector = self.create_archetype_record()
        # FIXME there should be a function for this...
        timestamp = int(time.time() * 1000)
        self.kb.add_ehr_record(action, timestamp, archetype, fields)
        rs = self.kb.get_ehr_records(selector)
        individual = action.target
        individual.reload()
        self.assertTrue(len(rs) > 0)
        not_found = True
        for r in rs:
            for k in ['a_id', 'i_id', 'timestamp', 'archetype', 'fields']:
                self.assertTrue(k in r)
            if r['a_id'] == action.id:
                not_found = False
                self.assertEqual(r['i_id'], individual.id)
                self.assertEqual(r['timestamp'], timestamp)
                self.assertEqual(r['archetype'], archetype)
                nfields = r['fields']
                self.assertTrue(len(nfields) >= len(fields))
                for k in fields:
                    self.assertTrue(k in nfields)
                    self.assertEqual(nfields[k], fields[k])
                break
        else:
            self.assertTrue(not_found)
class TestKB(KBObjectCreator):

  def __init__(self, name):
    super(TestKB, self).__init__(name)
    self.kill_list = []

  def setUp(self):
    self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

  def tearDown(self):
    self.kill_list.reverse()
    for x in self.kill_list:
      self.kb.delete(x)
    self.kill_list = []

  def check_object(self, o, conf, otype):
    try:
      self.assertTrue(isinstance(o, otype))
      for k in conf.keys():
        v = conf[k]
        # FIXME this is omero specific...
        if hasattr(v, 'ome_obj'):
          self.assertEqual(getattr(o, k).id, v.id)
          self.assertEqual(type(getattr(o, k)), type(v))
        elif hasattr(v, '_id'):
          self.assertEqual(getattr(o, k)._id, v._id)
        else:
          self.assertEqual(getattr(o, k), v)
    except:
      pass

  def test_container(self):
    conf, c = self.create_container()
    self.kill_list.append(c.save())
    self.check_object(c, conf, self.kb.Container)

  def test_slotted_container(self):
    conf, c = self.create_slotted_container()
    self.kill_list.append(c.save())
    self.check_object(c, conf, self.kb.SlottedContainer)

  def test_titer_plate(self):
    conf, c = self.create_titer_plate()
    self.kill_list.append(c.save())
    self.check_object(c, conf, self.kb.TiterPlate)

  def test_data_collection(self):
    conf, c = self.create_data_collection()
    self.kill_list.append(c.save())
    self.check_object(c, conf, self.kb.DataCollection)

  def test_data_collection_item(self):
    conf, c = self.create_data_collection_item()
    self.kill_list.append(c.save())
    self.check_object(c, conf, self.kb.DataCollectionItem)
Пример #4
0
class TestKB(KBObjectCreator):
    def __init__(self, name):
        super(TestKB, self).__init__(name)
        self.kill_list = []

    def setUp(self):
        self.kb = KB(driver="omero")(OME_HOST, OME_USER, OME_PASS)

    def tearDown(self):
        self.kill_list.reverse()
        for x in self.kill_list:
            self.kb.delete(x)
        self.kill_list = []

    def check_object(self, o, conf, otype):
        try:
            self.assertTrue(isinstance(o, otype))
            for k in conf.keys():
                v = conf[k]
                # FIXME this is omero specific...
                if hasattr(v, "ome_obj"):
                    self.assertEqual(getattr(o, k).id, v.id)
                    self.assertEqual(type(getattr(o, k)), type(v))
                elif hasattr(v, "_id"):
                    self.assertEqual(getattr(o, k)._id, v._id)
                else:
                    self.assertEqual(getattr(o, k), v)
        except:
            pass

    def test_data_sample(self):
        conf, ds = self.create_data_sample()
        self.kill_list.append(ds.save())
        self.check_object(ds, conf, self.kb.DataSample)

    def test_affymetrix_cel(self):
        conf, ds = self.create_affymetrix_cel()
        self.kill_list.append(ds.save())
        self.check_object(ds, conf, self.kb.AffymetrixCel)

    def test_snp_markers_set(self):
        conf, sms = self.create_snp_markers_set()
        self.kill_list.append(sms.save())
        self.check_object(sms, conf, self.kb.SNPMarkersSet)

    def test_genotype_data_sample(self):
        conf, gds = self.create_genotype_data_sample()
        self.kill_list.append(gds.save())
        self.check_object(gds, conf, self.kb.GenotypeDataSample)

    def test_data_object(self):
        conf, do = self.create_data_object()
        self.kill_list.append(do.save())
        self.check_object(do, conf, self.kb.DataObject)
class TestKB(KBObjectCreator):
    def __init__(self, name):
        super(TestKB, self).__init__(name)
        self.kill_list = []

    def setUp(self):
        self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

    def tearDown(self):
        self.kill_list.reverse()
        for x in self.kill_list:
            self.kb.delete(x)
        self.kill_list = []

    def check_object(self, o, conf, otype):
        try:
            self.assertTrue(isinstance(o, otype))
            for k in conf.keys():
                v = conf[k]
                # FIXME this is omero specific...
                if hasattr(v, 'ome_obj'):
                    self.assertEqual(getattr(o, k).id, v.id)
                    self.assertEqual(type(getattr(o, k)), type(v))
                elif hasattr(v, '_id'):
                    self.assertEqual(getattr(o, k)._id, v._id)
                else:
                    self.assertEqual(getattr(o, k), v)
        except:
            pass

    def test_container(self):
        conf, c = self.create_container()
        self.kill_list.append(c.save())
        self.check_object(c, conf, self.kb.Container)

    def test_slotted_container(self):
        conf, c = self.create_slotted_container()
        self.kill_list.append(c.save())
        self.check_object(c, conf, self.kb.SlottedContainer)

    def test_titer_plate(self):
        conf, c = self.create_titer_plate()
        self.kill_list.append(c.save())
        self.check_object(c, conf, self.kb.TiterPlate)

    def test_data_collection(self):
        conf, c = self.create_data_collection()
        self.kill_list.append(c.save())
        self.check_object(c, conf, self.kb.DataCollection)

    def test_data_collection_item(self):
        conf, c = self.create_data_collection_item()
        self.kill_list.append(c.save())
        self.check_object(c, conf, self.kb.DataCollectionItem)
Пример #6
0
class TestKB(KBObjectCreator):
    def __init__(self, name):
        super(TestKB, self).__init__(name)
        self.kill_list = []

    def setUp(self):
        self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

    def tearDown(self):
        self.kill_list.reverse()
        for x in self.kill_list:
            self.kb.delete(x)
        self.kill_list = []

    def check_object(self, o, conf, otype):
        try:
            self.assertTrue(isinstance(o, otype))
            for k in conf.keys():
                v = conf[k]
                # FIXME this is omero specific...
                if hasattr(v, 'ome_obj'):
                    self.assertEqual(getattr(o, k).id, v.id)
                    self.assertEqual(type(getattr(o, k)), type(v))
                elif hasattr(v, '_id'):
                    self.assertEqual(getattr(o, k)._id, v._id)
                else:
                    self.assertEqual(getattr(o, k), v)
        except:
            pass

    def test_data_sample(self):
        conf, ds = self.create_data_sample()
        self.kill_list.append(ds.save())
        self.check_object(ds, conf, self.kb.DataSample)

    def test_affymetrix_cel(self):
        conf, ds = self.create_affymetrix_cel()
        self.kill_list.append(ds.save())
        self.check_object(ds, conf, self.kb.AffymetrixCel)

    def test_snp_markers_set(self):
        conf, sms = self.create_snp_markers_set()
        self.kill_list.append(sms.save())
        self.check_object(sms, conf, self.kb.SNPMarkersSet)

    def test_genotype_data_sample(self):
        conf, gds = self.create_genotype_data_sample()
        self.kill_list.append(gds.save())
        self.check_object(gds, conf, self.kb.GenotypeDataSample)

    def test_data_object(self):
        conf, do = self.create_data_object()
        self.kill_list.append(do.save())
        self.check_object(do, conf, self.kb.DataObject)
Пример #7
0
class TestKB(KBObjectCreator):

  def __init__(self, name):
    super(TestKB, self).__init__(name)
    self.kill_list = []

  def setUp(self):
    self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

  def tearDown(self):
    self.kill_list.reverse()
    for x in self.kill_list:
      self.kb.delete(x)
    self.kill_list = []

  def check_object(self, o, conf, otype):
    try:
      self.assertTrue(isinstance(o, otype))
      for k in conf.keys():
        v = conf[k]
        # FIXME this is omero specific...
        if hasattr(v, 'ome_obj'):
          self.assertEqual(getattr(o, k).id, v.id)
          self.assertEqual(type(getattr(o, k)), type(v))
        elif hasattr(v, '_id'):
          self.assertEqual(getattr(o, k)._id, v._id)
        else:
          self.assertEqual(getattr(o, k), v)
    except:
      pass

  def test_individual(self):
    conf, i = self.create_individual()
    self.kill_list.append(i.save())
    self.check_object(i, conf, self.kb.Individual)

  def test_enrollment(self):
    conf, e = self.create_enrollment()
    self.kill_list.append(e.save())
    self.check_object(e, conf, self.kb.Enrollment)

  def test_enrollment_ops(self):
    conf, e = self.create_enrollment()
    e.save()
    study = e.study
    xe = self.kb.get_enrollment(study, conf['studyCode'])
    self.assertTrue(not xe is None)
    self.assertEqual(xe.id, e.id)
    self.kb.delete(e)
    self.assertEqual(self.kb.get_enrollment(study, conf['studyCode']), None)
Пример #8
0
class TestKB(KBObjectCreator):
    def __init__(self, name):
        super(TestKB, self).__init__(name)
        self.kill_list = []

    def setUp(self):
        self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

    def tearDown(self):
        self.kill_list.reverse()
        for x in self.kill_list:
            self.kb.delete(x)
        self.kill_list = []

    def check_object(self, o, conf, otype):
        try:
            self.assertTrue(isinstance(o, otype))
            for k in conf.keys():
                v = conf[k]
                # FIXME this is omero specific...
                if hasattr(v, 'ome_obj'):
                    self.assertEqual(getattr(o, k).id, v.id)
                    self.assertEqual(type(getattr(o, k)), type(v))
                elif hasattr(v, '_id'):
                    self.assertEqual(getattr(o, k)._id, v._id)
                else:
                    self.assertEqual(getattr(o, k), v)
        except:
            pass

    def test_individual(self):
        conf, i = self.create_individual()
        self.kill_list.append(i.save())
        self.check_object(i, conf, self.kb.Individual)

    def test_enrollment(self):
        conf, e = self.create_enrollment()
        self.kill_list.append(e.save())
        self.check_object(e, conf, self.kb.Enrollment)

    def test_enrollment_ops(self):
        conf, e = self.create_enrollment()
        e.save()
        study = e.study
        xe = self.kb.get_enrollment(study, conf['studyCode'])
        self.assertTrue(not xe is None)
        self.assertEqual(xe.id, e.id)
        self.kb.delete(e)
        self.assertEqual(self.kb.get_enrollment(study, conf['studyCode']),
                         None)
Пример #9
0
class TestKB(KBObjectCreator):
    def __init__(self, name):
        super(TestKB, self).__init__(name)
        self.kill_list = []

    def setUp(self):
        self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

    def tearDown(self):
        self.kill_list.reverse()
        for x in self.kill_list:
            self.kb.delete(x)
        self.kill_list = []

    def check_object(self, o, conf, otype):
        try:
            self.assertTrue(isinstance(o, otype))
            for k in conf.keys():
                v = conf[k]
                # FIXME this is omero specific...
                if hasattr(v, 'ome_obj'):
                    self.assertEqual(getattr(o, k).id, v.id)
                    self.assertEqual(type(getattr(o, k)), type(v))
                elif hasattr(v, '_id'):
                    self.assertEqual(getattr(o, k)._id, v._id)
                else:
                    self.assertEqual(getattr(o, k), v)
        except:
            pass

    def test_parallel_save(self):
        aconf, action = self.create_action()
        self.kill_list.append(action.save())
        N = 1000
        people = []
        for i in range(N):
            conf, i = self.create_individual(action=action,
                                             gender=self.kb.Gender.MALE)
            self.kill_list.append(i)
            people.append(i)
        start = time.time()
        self.kb.save_array(people)
        print ' \n\ttime needed to save %s object: %s' % (N,
                                                          time.time() - start)
Пример #10
0
class TestKB(KBObjectCreator):

  def __init__(self, name):
    super(TestKB, self).__init__(name)
    self.kill_list = []

  def setUp(self):
    self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

  def tearDown(self):
    self.kill_list.reverse()
    for x in self.kill_list:
      self.kb.delete(x)
    self.kill_list = []

  def check_object(self, o, conf, otype):
    try:
      self.assertTrue(isinstance(o, otype))
      for k in conf.keys():
        v = conf[k]
        # FIXME this is omero specific...
        if hasattr(v, 'ome_obj'):
          self.assertEqual(getattr(o, k).id, v.id)
          self.assertEqual(type(getattr(o, k)), type(v))
        elif hasattr(v, '_id'):
          self.assertEqual(getattr(o, k)._id, v._id)
        else:
          self.assertEqual(getattr(o, k), v)
    except:
      pass

  def test_parallel_save(self):
    aconf, action = self.create_action()
    self.kill_list.append(action.save())
    N = 1000
    people = []
    for i in range(N):
      conf, i = self.create_individual(action=action,
                                       gender=self.kb.Gender.MALE)
      self.kill_list.append(i)
      people.append(i)
    start =  time.time()
    self.kb.save_array(people)
    print' \n\ttime needed to save %s object: %s' % (N, time.time() - start)
Пример #11
0
class TestKB(KBObjectCreator):

  def __init__(self, name):
    super(TestKB, self).__init__(name)
    self.kill_list = []

  def setUp(self):
    self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

  def tearDown(self):
    self.kill_list.reverse()
    for x in self.kill_list:
      self.kb.delete(x)
    self.kill_list = []

  def check_object(self, o, conf, otype):
    try:
      self.assertTrue(isinstance(o, otype))
      for k in conf.keys():
        v = conf[k]
        # FIXME this is omero specific...
        if hasattr(v, 'ome_obj'):
          self.assertEqual(getattr(o, k).id, v.id)
          self.assertEqual(type(getattr(o, k)), type(v))
        elif hasattr(v, '_id'):
          self.assertEqual(getattr(o, k)._id, v._id)
        else:
          self.assertEqual(getattr(o, k), v)
    except:
      pass

  def test_vessel(self):
    conf, v = self.create_vessel()
    self.kill_list.append(v.save())
    self.check_object(v, conf, self.kb.Vessel)

  def test_tube(self):
    conf, v = self.create_tube()
    self.kill_list.append(v.save())
    self.check_object(v, conf, self.kb.Tube)
Пример #12
0
class TestKB(KBObjectCreator):
    def __init__(self, name):
        super(TestKB, self).__init__(name)
        self.kill_list = []

    def setUp(self):
        self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

    def tearDown(self):
        self.kill_list.reverse()
        for x in self.kill_list:
            self.kb.delete(x)
        self.kill_list = []

    def check_object(self, o, conf, otype):
        try:
            self.assertTrue(isinstance(o, otype))
            for k in conf.keys():
                v = conf[k]
                # FIXME this is omero specific...
                if hasattr(v, 'ome_obj'):
                    self.assertEqual(getattr(o, k).id, v.id)
                    self.assertEqual(type(getattr(o, k)), type(v))
                elif hasattr(v, '_id'):
                    self.assertEqual(getattr(o, k)._id, v._id)
                else:
                    self.assertEqual(getattr(o, k), v)
        except:
            pass

    def test_vessel(self):
        conf, v = self.create_vessel()
        self.kill_list.append(v.save())
        self.check_object(v, conf, self.kb.Vessel)

    def test_tube(self):
        conf, v = self.create_tube()
        self.kill_list.append(v.save())
        self.check_object(v, conf, self.kb.Tube)
Пример #13
0
class TestKB(KBObjectCreator):

  def __init__(self, name):
    super(TestKB, self).__init__(name)
    self.kill_list = []

  def setUp(self):
    self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

  def tearDown(self):
    self.kill_list.reverse()
    for x in self.kill_list:
      self.kb.delete(x)
    self.kill_list = []

  def check_object(self, o, conf, otype):
    try:
      self.assertTrue(isinstance(o, otype))
      for k in conf.keys():
        v = conf[k]
        # FIXME this is omero specific...
        if hasattr(v, 'ome_obj'):
          self.assertEqual(getattr(o, k).id, v.id)
          self.assertEqual(type(getattr(o, k)), type(v))
        elif hasattr(v, '_id'):
          self.assertEqual(getattr(o, k)._id, v._id)
        else:
          self.assertEqual(getattr(o, k), v)
    except:
      pass

  def test_study(self):
    conf, s = self.create_study()
    self.kill_list.append(s.save())
    self.check_object(s, conf, self.kb.Study)

  def test_study_ops(self):
    conf, s = self.create_study()
    s.save()
    xs = self.kb.get_study(conf['label'])
    self.assertTrue(not xs is None)
    self.assertEqual(xs.id, s.id)
    self.assertEqual(xs.label, s.label)
    self.kb.delete(s)
    self.assertEqual(self.kb.get_study(conf['label']), None)

  def test_device(self):
    conf, d = self.create_device()
    self.kill_list.append(d.save())
    self.check_object(d, conf, self.kb.Device)

  def test_hardware_device(self):
    conf, d = self.create_hardware_device()
    self.kill_list.append(d.save())
    self.check_object(d, conf, self.kb.HardwareDevice)

  def test_device_ops(self):
    conf, d = self.create_device()
    d.save()
    xs = self.kb.get_device(conf['label'])
    self.assertTrue(not xs is None)
    self.check_object(xs, conf, self.kb.Device)
    self.kb.delete(d)
    self.assertEqual(self.kb.get_device(conf['label']), None)

  def test_action_setup(self):
    conf, a = self.create_action_setup()
    self.kill_list.append(a.save())
    self.check_object(a, conf, self.kb.ActionSetup)

  def test_action(self):
    conf, action = self.create_action()
    self.kill_list.append(action.save())
    self.check_object(action, conf, self.kb.Action)

  def test_action_on_vessel(self):
    conf, action = self.create_action_on_vessel()
    self.kill_list.append(action.save())
    self.check_object(action, conf, self.kb.ActionOnVessel)

  def test_action_on_data_sample(self):
    conf, action = self.create_action_on_data_sample()
    self.kill_list.append(action.save())
    self.check_object(action, conf, self.kb.ActionOnDataSample)

  def test_action_on_data_collection_item(self):
    conf, action = self.create_action_on_data_collection_item()
    self.kill_list.append(action.save())
    self.check_object(action, conf, self.kb.ActionOnDataSample)
Пример #14
0
class TestKB(KBObjectCreator):
    def __init__(self, name):
        super(TestKB, self).__init__(name)
        self.kill_list = []

    def setUp(self):
        self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASS)

    def tearDown(self):
        self.kill_list.reverse()
        for x in self.kill_list:
            self.kb.delete(x)
        self.kill_list = []

    def check_object(self, o, conf, otype):
        try:
            self.assertTrue(isinstance(o, otype))
            for k in conf.keys():
                v = conf[k]
                # FIXME this is omero specific...
                if hasattr(v, 'ome_obj'):
                    self.assertEqual(getattr(o, k).id, v.id)
                    self.assertEqual(type(getattr(o, k)), type(v))
                elif hasattr(v, '_id'):
                    self.assertEqual(getattr(o, k)._id, v._id)
                else:
                    self.assertEqual(getattr(o, k), v)
        except:
            pass

    def test_study(self):
        conf, s = self.create_study()
        self.kill_list.append(s.save())
        self.check_object(s, conf, self.kb.Study)

    def test_study_ops(self):
        conf, s = self.create_study()
        s.save()
        xs = self.kb.get_study(conf['label'])
        self.assertTrue(not xs is None)
        self.assertEqual(xs.id, s.id)
        self.assertEqual(xs.label, s.label)
        self.kb.delete(s)
        self.assertEqual(self.kb.get_study(conf['label']), None)

    def test_device(self):
        conf, d = self.create_device()
        self.kill_list.append(d.save())
        self.check_object(d, conf, self.kb.Device)

    def test_hardware_device(self):
        conf, d = self.create_hardware_device()
        self.kill_list.append(d.save())
        self.check_object(d, conf, self.kb.HardwareDevice)

    def test_device_ops(self):
        conf, d = self.create_device()
        d.save()
        xs = self.kb.get_device(conf['label'])
        self.assertTrue(not xs is None)
        self.check_object(xs, conf, self.kb.Device)
        self.kb.delete(d)
        self.assertEqual(self.kb.get_device(conf['label']), None)

    def test_action_setup(self):
        conf, a = self.create_action_setup()
        self.kill_list.append(a.save())
        self.check_object(a, conf, self.kb.ActionSetup)

    def test_action(self):
        conf, action = self.create_action()
        self.kill_list.append(action.save())
        self.check_object(action, conf, self.kb.Action)

    def test_action_on_vessel(self):
        conf, action = self.create_action_on_vessel()
        self.kill_list.append(action.save())
        self.check_object(action, conf, self.kb.ActionOnVessel)

    def test_action_on_data_sample(self):
        conf, action = self.create_action_on_data_sample()
        self.kill_list.append(action.save())
        self.check_object(action, conf, self.kb.ActionOnDataSample)

    def test_action_on_data_collection_item(self):
        conf, action = self.create_action_on_data_collection_item()
        self.kill_list.append(action.save())
        self.check_object(action, conf, self.kb.ActionOnDataSample)
Пример #15
0
class markers_set(unittest.TestCase):

  def __init__(self, name):
    super(markers_set, self).__init__(name)
    self.kill_list = []

  def setUp(self):
    self.kb = KB(driver='omero')(OME_HOST, OME_USER, OME_PASSWD)
    conf = {
      'label': 'TEST-%f' % time.time(),
      'description': 'unit test garbage',
      }
    self.study = self.kb.factory.create(self.kb.Study, conf).save()
    self.kill_list.append(self.study)
    self.action = self.kb.create_an_action(self.study)
    self.kill_list.append(self.action)

  def tearDown(self):
    self.kill_list.reverse()
    for x in self.kill_list:
      self.kb.delete(x)
    self.kill_list = []

  def create_markers(self, N):
    def marker_generator():
      for i in range(N):
        label = 'A%f-%d' % (time.time(), i)
        yield (label, label, 'ACCA[A/B]TACCA')
    source, context, release = 'unit_testing', 'markers_set', '%f' % time.time()
    ref_rs_genome, dbsnp_build = 'foo-rs-genome', 123000
    lvs = self.kb.create_markers(source, context, release,
                                 ref_rs_genome, dbsnp_build,
                                 marker_generator(), self.action)
    return lvs

  def create_snp_markers_set(self, lvs):
    label = 'ams-%f' % time.time()
    maker, model, release = 'FOO', 'FOO1', '%f' % time.time()
    markers_selection = [(v[1], i, False) for i, v in enumerate(lvs)]
    mset = self.kb.create_snp_markers_set(label, maker, model, release,
                                          len(lvs),
                                          markers_selection, self.action)
    self.kill_list.append(mset)
    return mset

  def create_alignments(self, mset, ref_genome, n_duplicates):
    mset.load_markers()
    self.assertTrue(len(mset) > 0)
    n_aligns = len(mset.markers) + n_duplicates
    pos = []
    def insert_duplicates(markers):
      count = 0
      for i, m in enumerate(markers):
        n_copies = 1
        if count < n_duplicates:
          count += 1
          n_copies = 2
          r = (m[0], random.randint(1,26), 22 + i*1000, True,
               'A' if (i%2)== 0 else 'B', n_copies)
          yield r
        r = (m[0], random.randint(1,26), 1 + i*1000, True,
             'A' if (i%2)== 0 else 'B', n_copies)
        pos.append((0,0) if n_copies > 1 else (r[1], r[2]))
        yield r
    aligns = [x for x in insert_duplicates(mset.markers)]
    random.shuffle(aligns)
    self.kb.align_snp_markers_set(mset, ref_genome, aligns, self.action)
    return pos

  def create_data_sample(self, mset, label):
    conf = {
      'label': label,
      'status': self.kb.DataSampleStatus.USABLE,
      'action': self.action,
      'snpMarkersSet': mset,
      }
    data_sample = self.kb.factory.create(self.kb.GenotypeDataSample,
                                         conf).save()
    self.kill_list.append(data_sample)
    return data_sample

  def create_data_object(self, data_sample, add_nan=False):
    probs, confs = make_fake_data(data_sample.snpMarkersSet, add_nan)
    do = self.kb.add_gdo_data_object(self.action, data_sample, probs, confs)
    self.kill_list.append(do)
    return probs, confs

  def create_aligned_mset(self, N, N_dups, ref_genome):
    lvs = self.create_markers(N)
    mset = self.create_snp_markers_set(lvs)
    pos = self.create_alignments(mset, ref_genome, N_dups)
    return mset, pos

  def test_creation_destruction(self):
    N = 32
    lvs = self.create_markers(N)
    mset = self.create_snp_markers_set(lvs)
    mset.load_markers()
    self.assertEqual(len(mset), N)
    for lv, m in it.izip(lvs, mset.markers):
      self.assertEqual(lv[1], m[0])

  def test_align(self):
    N = 16
    N_dups = 4
    ref_genome = 'g' + ('%f' % time.time())[-14:]
    mset, pos = self.create_aligned_mset(N, N_dups, ref_genome)
    mset.load_alignments(ref_genome)
    for p, m in it.izip(pos, mset.get_markers_iterator()):
      self.assertEqual(p, m.position)

  def test_read_ssc(self):
    N = 16
    N_dups = 4
    ref_genome = 'g' + ('%f' % time.time())[-14:]
    mset, pos = self.create_aligned_mset(N, N_dups, ref_genome)
    mset.load_markers(additional_fields=['label'])
    probs, confs = make_fake_data(mset)
    sample_id = 'ffoo-%f' % time.time()
    fn = tempfile.NamedTemporaryFile().name
    make_fake_ssc(mset, sample_id, probs, confs, fn)
    probs_1, confs_1 = gio.read_ssc(fn, mset)
    self.assertAlmostEqual(np.sum(np.abs(probs - probs_1)), 0.0)
    self.assertAlmostEqual(np.sum(np.abs(confs - confs_1)), 0.0)

  def test_gdo(self):
    N = 32
    lvs = self.create_markers(N)
    mset = self.create_snp_markers_set(lvs)
    mset.load_markers()
    data_sample = self.create_data_sample(mset, 'foo-data')
    probs, confs = self.create_data_object(data_sample)
    probs1, confs1 = data_sample.resolve_to_data()
    self.assertTrue((probs == probs1).all())
    self.assertTrue((confs == confs1).all())
    s = self.kb.get_gdo_iterator(mset, data_samples=[data_sample])
    for i, x in enumerate(s):
      self.assertTrue((probs == x['probs']).all())
      self.assertTrue((confs == x['confidence']).all())
    self.assertEqual(i, 0)
    indices = slice(N/4, N/2)
    s = self.kb.get_gdo_iterator(mset, data_samples=[data_sample],
                                 indices=indices)
    for i, x in enumerate(s):
      self.assertTrue((probs[:,indices] == x['probs']).all())
      self.assertTrue((confs[indices] == x['confidence']).all())
    self.assertEqual(i, 0)

  def test_define_range_selector(self):
    N, N_dups = 16, 0
    ref_genome = 'g' + ('%f' % time.time())[-14:]
    mset, pos = self.create_aligned_mset(N, N_dups, ref_genome)
    mset.load_alignments(ref_genome)
    pos.sort()
    if len(pos) > 2:
      low_pos, high_pos = pos[1], pos[-2]
    gc_range = (low_pos, high_pos)
    range_sel = self.kb.SNPMarkersSet.define_range_selector(mset, gc_range)
    i = 0
    for (i, m) in enumerate(mset.get_markers_iterator()):
      if i in range_sel:
        self.assertTrue(low_pos <= m.position <= high_pos)
      else:
        self.assertTrue(low_pos > m.position or high_pos < m.position)

  def test_intersect(self):
    ref_genome = 'g' + ('%f' % time.time())[-14:]
    N1 = 16
    M1 = 2
    N2 = N1/2
    M2 = 1
    lvs = self.create_markers(N1)
    mset1 = self.create_snp_markers_set(lvs)
    mset1.load_markers()
    aligns = [(m[0], random.randint(1,26), 1 + i*2000, True, 'A', 1)
              for i, m in enumerate(mset1.markers)]
    for i in range(M1):
      aligns[i] = (aligns[i][0], 0, 0, True, 'A', 0)
    self.kb.align_snp_markers_set(mset1, ref_genome, aligns, self.action)
    lvs = self.create_markers(N2)
    mset2 = self.create_snp_markers_set(lvs)
    mset2.load_markers()
    aligns = [(m[0], a[1], a[2], a[3], a[4], a[5])
              for m, a in it.izip(mset2.markers, aligns[:len(mset2)])]
    for i in range(M2):
      aligns[i] = (aligns[i][0], 0, 0, True, 'A', 0)
    self.kb.align_snp_markers_set(mset2, ref_genome, aligns, self.action)
    mset1.load_alignments(ref_genome)
    mset2.load_alignments(ref_genome)
    idx1, idx2 = self.kb.SNPMarkersSet.intersect(mset1, mset1)
    self.assertTrue(np.array_equal(idx1, idx2))
    self.assertEqual(len(idx1), len(mset1))
    self.assertEqual(len(idx1), N1)

    idx1, idx2 = self.kb.SNPMarkersSet.intersect(mset1, mset2)
    self.assertEqual(len(idx1), len(idx2))
    self.assertEqual(len(idx1), N2 - max(M1, M2))
    for i,j in it.izip(idx1, idx2):
      m1, m2 = mset1[i], mset2[j]
      self.assertEqual(m1.position, m2.position)
      self.assertTrue(m1.position > (0,0))

  def test_speed(self):
    ref_genome = 'g' + ('%f' % time.time())[-14:]
    N1 = 1024*1024
    N2 = N1/2
    beg = time.time()
    lvs = self.create_markers(N1)
    print ''
    print 'creating %d markers took %f' % (N1, time.time() - beg)
    beg = time.time()
    mset1 = self.create_snp_markers_set(lvs)
    print 'creating a markers set with %d markers took %f' % (N1,
                                                              time.time() - beg)
    beg = time.time()
    mset1.load_markers()
    print 'loading markers took %f' % (time.time() - beg)
    beg = time.time()
    aligns = [(m[0], random.randint(1,26), 1 + i*2000, True, 'A', 1)
              for i, m in enumerate(mset1.markers)]
    print 'creating %d aligns took %f' % (N1, time.time() - beg)
    beg = time.time()
    self.kb.align_snp_markers_set(mset1, ref_genome, aligns, self.action)
    print 'saving  %d aligns took %f' % (N1, time.time() - beg)
    beg = time.time()
    mset1.load_alignments(ref_genome)
    print 'loading  %d aligns took %f' % (N1, time.time() - beg)
    beg = time.time()
    idx1, idx2 = self.kb.SNPMarkersSet.intersect(mset1, mset1)
    print 'intersecting  %d aligns took %f' % (N1, time.time() - beg)

  def test_speed_gdo(self):
    N = 934968
    beg = time.time()
    lvs = self.create_markers(N)
    print ''
    print 'creating %d markers took %f' % (N, time.time() - beg)
    mset = self.create_snp_markers_set(lvs)
    beg = time.time()
    mset.load_markers()
    print 'loading %d markers took %f' % (N, time.time() - beg)
    beg = time.time()
    data_sample = self.create_data_sample(mset, 'foo-data')
    print 'creating a data sample took %f' % (time.time() - beg)
    beg = time.time()
    probs, confs = self.create_data_object(data_sample)
    print 'creating a data object took %f' % (time.time() - beg)
    beg = time.time()
    probs1, confs1 = data_sample.resolve_to_data()
    print 'resolving to data  took %f' % (time.time() - beg)
    self.assertTrue((probs == probs1).all())
    self.assertTrue((confs == confs1).all())
    beg = time.time()
    s = self.kb.get_gdo_iterator(mset, data_samples=[data_sample])
    for i, x in enumerate(s):
      self.assertTrue((probs == x['probs']).all())
      self.assertTrue((confs == x['confidence']).all())
    self.assertEqual(i, 0)
    print 'iterating took %f' % (time.time() - beg)
    indices = slice(N/4, N/2)
    beg = time.time()
    s = self.kb.get_gdo_iterator(mset, data_samples=[data_sample],
                                 indices=indices)
    for i, x in enumerate(s):
      self.assertTrue((probs[:,indices] == x['probs']).all())
      self.assertTrue((confs[indices] == x['confidence']).all())
    self.assertEqual(i, 0)
    print 'iterating with indices took %f' % (time.time() - beg)