From a6316c8fee8b372a28653de238e5d1a192fda5a4 Mon Sep 17 00:00:00 2001 From: Robert Jordens Date: Tue, 24 Mar 2015 13:12:40 -0600 Subject: [PATCH] faq: clarifications --- doc/manual/faq.rst | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/doc/manual/faq.rst b/doc/manual/faq.rst index 825b93dd9..540df3b02 100644 --- a/doc/manual/faq.rst +++ b/doc/manual/faq.rst @@ -4,8 +4,8 @@ FAQ How do I ... ============ -override the sysclk frequency of just one dds? ----------------------------------------------- +override the `sysclk` frequency of just one dds? +------------------------------------------------ Override the parameter using an argument in the ddb. @@ -18,12 +18,13 @@ Names need to be unique. enforce functional dependencies between parameters? --------------------------------------------------- -Use wrapper experiments, overriding parameters of arguments. +If you want to slave a parameter `b` in the pdb to be `b = 2*a`, +use wrapper experiments, overriding parameters of arguments. -get rid of `DbKeys`? +get rid of `DBKeys`? -------------------- -`DbKeys` enforces valid parameter/argument names, references +`DBKeys` enforces valid parameter/argument names, references keys in pdb and hints at metadata on how values can be retrieved. write a generator feeding a kernel feeding an analyze function? @@ -61,8 +62,10 @@ Use `threading.Thread`: portable, fast, simple for one-shot calls write part of my experiment as a coroutine/Task/generator? ---------------------------------------------------------- -You want to write experiment preparation (`__init__()` or `build()`) -or analysis (`analyze()`) - -No. That would make reusing your own code in sub-experiments difficult and -fragile. +You can not change the API that your experiment exposes: `__init__()`, +`build()`, and `analyze()` need to be regular functions, not generators, +coroutines. or `asyncio.Tasks`. That would make reusing your own code in +sub-experiments difficult and fragile. You can however always use the +scheduler API to achieve the same (`scheduler.suspend(duration=0)`) +or wrap your own generators/coroutines/Tasks in regular functions that +you then expose as part of the API.