예제 #1
0
 def run(self, aq: AqSession, models: List[Sample], new_node_callback=None):
     with aq.with_cache(timeout=60) as sess:
         page_size = 1000
         with Progress() as progress:
             task0 = progress.add_task("getting items...", total=page_size*2)
             with infinite_task_context(progress, task_id=task0) as callback:
                 items = sess.Item.where({"sample_id": [m.id for m in models]}, page_size=page_size, page_callback=callback)
                 sess.browser.get(items, {'object_type'})
                 return list(sess.browser.models)
예제 #2
0
 def run(
     self,
     aq: AqSession,
     models: List[Sample],
     *,
     new_node_callback: Optional[NewNodeCallback] = None
 ) -> List[ModelBase]:
     with aq.with_cache(timeout=60) as sess:
         sess: AqSession
         # non_browser_sess = aq(using_cache=False)
         page_size = 1000
         browser: Browser = sess.browser
         with Progress() as progress:
             task0 = progress.add_task("collecting samples",
                                       total=page_size * 2)
             with infinite_task_context(progress, task0) as callback:
                 query = {
                     '__model__': 'FieldValue',
                     '__query__': {
                         'parent_class': 'Operation',
                         'child_sample_id': [m.id for m in models],
                         '__return__': {
                             'operation': {
                                 'plan_associations': {},
                                 'job_associations': {},
                                 'operation_type': 'field_types',
                                 'field_values': {'sample', 'item'}
                             },
                             'field_type': {}
                         }
                     }
                 }
                 results = sess.query(query,
                                      use_cache=True,
                                      page_size=page_size,
                                      page_callback=callback)
                 browser.update_cache(results)
         return list(browser.models)
예제 #3
0
    def _create_network(
        cls,
        aq: AqSession,
        models: List[ModelBase],
        new_node_callback: NewNodeCallback = None,
        new_edge_callback: NewEdgeCallback = None,
    ) -> nx.DiGraph:

        with aq.with_cache(timeout=120) as sess:
            browser: Browser = sess.browser
            browser.clear()
            browser.update_cache(models)
            g = relationship_network(
                sess.browser,
                models,
                reverse=True,
                get_models=cls.get_models,
                cache_func=cls.cache_func,
                key_func=cls.key_func,
                strict_cache=False,
                new_node_callback=new_node_callback,
                new_edge_callback=new_edge_callback,
            )
            return g