Esempio n. 1
0
File: nims.py Progetto: arokem/nims
 def from_mrfile(cls, mrfile, nims_path, archived=True):
     series_uid = nimsutil.pack_dicom_uid(mrfile.series_uid)
     dataset = (cls.query.join(Epoch)
             .filter(Epoch.uid == series_uid)
             .filter(Epoch.acq == mrfile.acq_no)
             .filter(cls.filetype == mrfile.filetype)
             .first())
     if not dataset:
         alt_dataset = (cls.query.join(Epoch)
                 .filter(Epoch.uid == series_uid)
                 .filter(Epoch.acq == mrfile.acq_no)
                 .filter(cls.kind == u'primary')
                 .first())
         if not alt_dataset:
             kind = u'primary'
         elif alt_dataset.priority < mrfile.priority:
             kind = u'primary'
             alt_dataset.kind = u'secondary'
         else:
             kind = u'secondary'
         epoch = Epoch.from_mrfile(mrfile)
         dataset = cls(
                 container=epoch,
                 priority = mrfile.priority,
                 filetype=mrfile.filetype,
                 compressed=mrfile.compressed,
                 kind=kind,
                 label=cls.default_labels[mrfile.filetype],
                 archived=archived,
                 )
         transaction.commit()
         DBSession.add(dataset)
         nimsutil.make_joined_path(nims_path, dataset.relpath)
     return dataset
Esempio n. 2
0
 def from_metadata(cls, md):
     dataset = (
         cls.query.join(Epoch)
         .filter(Epoch.uid == md.series_uid)
         .filter(Epoch.acq == md.acq_no)
         .with_lockmode("update")
         .first()
     )
     if not dataset:
         epoch = Epoch.from_metadata(md)
         dataset = cls(container=epoch, datatype=md.datatype, kind=u"primary", archived=True)
         transaction.commit()
         DBSession.add(dataset)
     return dataset
Esempio n. 3
0
 def latest_exp_session(self, min_access_level=u'Anon-Read'):
     query = DBSession.query(Experiment, Session).join(Subject, Experiment.subjects).join(Session, Subject.sessions)
     if not self.is_superuser:
         query = self._filter_access(query, min_access_level)
     if self.trash_flag == 0:
         query = query.filter(Session.trashtime == None)
     elif self.trash_flag == 2:
         query = query.filter(Session.trashtime != None)
     return query.order_by(Session.timestamp.desc()).first() or (None, None)
Esempio n. 4
0
 def dataset_cnt(self):
     query = DBSession.query(Session)
     if not self.is_superuser:
         query = (
             query.join(Subject, Session.subject)
             .join(Experiment, Subject.experiment)
             .join(Access)
             .filter(Access.user == self)
         )
     return query.count()
Esempio n. 5
0
 def from_mrfile(cls, mrfile, nims_path, archived=True):
     series_uid = nimsutil.pack_dicom_uid(mrfile.series_uid)
     dataset = (cls.query.join(Epoch)
             .filter(Epoch.uid == series_uid)
             .filter(Epoch.acq == mrfile.acq_no)
             .filter(cls.filetype == mrfile.filetype)
             .first())
     if not dataset:
         alt_dataset = (cls.query.join(Epoch)
                 .filter(Epoch.uid == series_uid)
                 .filter(Epoch.acq == mrfile.acq_no)
                 .filter(cls.kind == u'primary')
                 .first())
         if not alt_dataset:
             kind = u'primary'
         elif alt_dataset.priority < mrfile.priority:
             kind = u'primary'
             alt_dataset.kind = u'secondary'
             alt_dataset.container.qa_status = u'rerun'
         else:
             kind = u'secondary'
         epoch = Epoch.from_mrfile(mrfile)
         dataset = cls(
                 container=epoch,
                 priority = mrfile.priority,
                 filetype=mrfile.filetype,
                 compressed=mrfile.compressed,
                 kind=kind,
                 label=cls.default_labels[mrfile.filetype],
                 archived=archived,
                 qa_status=u'pending',
                 )
         transaction.commit()
         DBSession.add(dataset)
         nimsutil.make_joined_path(nims_path, dataset.relpath)
     return dataset
Esempio n. 6
0
 def setUp(self):
     """Prepare model test fixture."""
     try:
         new_attrs = {}
         new_attrs.update(self.attrs)
         new_attrs.update(self.do_get_dependencies())
         self.obj = self.klass(**new_attrs)
         DBSession.add(self.obj)
         DBSession.flush()
         return self.obj
     except:
         DBSession.rollback()
         raise
Esempio n. 7
0
 def setUp(self):
     """Prepare model test fixture."""
     try:
         new_attrs = {}
         new_attrs.update(self.attrs)
         new_attrs.update(self.do_get_dependencies())
         self.obj = self.klass(**new_attrs)
         DBSession.add(self.obj)
         DBSession.flush()
         return self.obj
     except:
         DBSession.rollback()
         raise
Esempio n. 8
0
 def at_path(cls, nims_path, filetype, label=None, archived=False):
     dataset = cls(filetype=filetype, label=(label if label else cls.default_labels[filetype]), archived=archived)
     transaction.commit()
     DBSession.add(dataset)
     nimsutil.make_joined_path(nims_path, dataset.relpath)
     return dataset
Esempio n. 9
0
 def experiment(self):
     return DBSession.query(Session, Experiment).join(Subject, Session.subject).join(Experiment, Subject.experiment).filter(Session.id == self.id).one().Experiment
Esempio n. 10
0
 def dataset_cnt(self):
     query = DBSession.query(Session)
     if not self.is_superuser:
         query = query.join(Subject, Session.subject).join(Experiment, Subject.experiment).join(Access).filter(Access.user==self)
     return query.count()
Esempio n. 11
0
 def test_query_obj(self):
     """Model objects can be queried"""
     obj = DBSession.query(self.klass).one()
     for key, value in self.attrs.iteritems():
         assert_equals(getattr(obj, key), value)
Esempio n. 12
0
 def tearDown(self):
     """Finish model test fixture."""
     DBSession.rollback()
Esempio n. 13
0
 def test_query_obj(self):
     """Model objects can be queried"""
     obj = DBSession.query(self.klass).one()
     for key, value in self.attrs.iteritems():
         assert_equals(getattr(obj, key), value)
Esempio n. 14
0
 def tearDown(self):
     """Finish model test fixture."""
     DBSession.rollback()
Esempio n. 15
0
 def at_path(cls, nims_path, filename=None, datatype=None, archived=False):
     dataset = cls(datatype=datatype, archived=archived)
     transaction.commit()
     DBSession.add(dataset)
     nimsutil.make_joined_path(nims_path, dataset.relpath)
     return dataset