Giter Club home page Giter Club logo

qibosoq's People

Contributors

alecandido avatar edoardo-pedicillo avatar javierserranogarcia avatar pre-commit-ci[bot] avatar rodolfocarobene avatar scarrazza avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qibosoq's Issues

Error transmission

When an error arise during the execution now the server raise an error and does not send anything to the client.
The client then gets an error related to not having received any response.

It should be fairly easy to send the error to the client so that the user can actually see what is the problem without looking into the logfile

Pylint and Mypy exceptions

Here is a complete list of lines where a pylint or mypy exception was added:

It would be nice to fix these, but there is no urgency

Improve documentation

As discussed the documentation should include:

  • more details about the interface
  • a short example/demo without qibolab

Add a qibosoq.client

As you can see in the documentation (https://qibo.science/qibosoq/latest/getting-started/tutorials.html), a client needs to open a server communication following a very precise structure, it will be nice to have directly in qibosoq few function that could be common for different clients:

  • excute()
  • from dictionary of objects to dictionary of dictionary
  • maybe a function that adds the two things toghether
  • maybe a ServerCommand object that stores the information instead of a dictionary? Could be useless

Qibosoq executables

Following the discussion in #11:

the actual execution makes your package an application, but it is rather weird if you then deploy it as a package: how would you run after installing with pip install qibosoq? (solution python /path/to/env/lib/python3.x/site-packages/qibosoq/rfsoc_server.py... not the best...)

I think we could also add, linked to this problem, executables like qibocal has (qq, qq-auto...)

Acquire & Acquire_decimated

There is something weird happening with the raw acquisition.

If I set the ADC channel to 0 I don't obtain any good result with the time of flight routine (both using the one in qibocal and the qick one), with ADC 1 perfectly sensible results.
---> I'd say then that I connected the ADC to channel 1.
If I execute resonator spectroscopy I do not obtain good results with ADC1, while ADC0 (that was the one that I though I connected) works perfectly.
---> I'd say then that I connected the ADC to channel 0.

The only difference of the two routines is in the acquisition, where I use acquire for standard acquisition and acquire_decimated for raw acquisition. I didn't have much time to check what the problem really is so I'm writing this issue for now

Mypy import error

Running mypy src on qibolab, I get various errors. Among them, one is:

src/qibolab/instruments/rfsoc/driver.py:8: error: 
Skipping analyzing "qibosoq": module is installed, but missing library stubs or py.typed marker  [import]

Clearly it's not a big problem, but why is it like this? Should we do something to fix it?
I think adding a py.typed file to src/qibosoq fixed the problem, but I don't have much experience and I don't know if this is something to do.

Do you, @AleCandido, know something more about this?

Releasing workflow on tags

In light of a faster iterative workflow, I'd propose to release wheels for each tag, essentially replacing github.event_name == 'release' && github.event.action == 'published' in:

publish: ${{ github.event_name == 'release' && github.event.action == 'published' && matrix.os == 'ubuntu-latest' && matrix.python-version == '3.10' }}

with github.event_name == 'push' && startsWith(github.ref, 'refs/tags/').

and changing the event:

on:
push:
merge_group:
release:
types:
- published

to just:

 on: 
   push:

Update QICK

now the dependency on qick is fixed to version 0.2.135, updating it to the newest version (that does not add new capabilities, but does some refactoring) causes some errors

Sphinx fails to import QickSoc

As you can see here (deploy docs report), sphinx is not able to compile the documentation of rfsoc_server.py because of the QickSoc object.

I already had a similar problem (sphinx could not initialize it, because not on board), but I thought that the problem was solved with autodoc_mock_imports = ["qick", "qick.QickSoc"] in the doc conf.py file. Obviously, I was wrong

Increase version and tag names

We should try to avoid typos on tags, e.g. v.0.0.3 instead of v0.0.3. After each release the version in pyproject.yaml should be updated.

Add workflows

Ideally, we would like to deploy this package to pypi so qibolab can rely on that for quick.

Global QickSoc() objects

Following the discussion in #11
The QickSoc object is global and we should instead pass it as an argument to the handler

Regenerate API docs automatically

Ok, I guess that there has been a problem in the transition: since they are now generated, I would gitignore these files.

Provided that, in a fresh clone (like it happens in the CI) they will always be generated.
If instead you're generating locally, we can add a task (e.g. to Poethepoet) that remove that folder before generating docs. When you're working on the docs, and not on the docstrings, there is no need to regenerate it every time. Otherwise, you'll just use the regenerating task.

Originally posted by @AleCandido in #29 (comment)

Unexpected error that I can't reproduce(?)

Hello @stavros11 @AleCandido, sorry to bother you but I need your expertise :-)
Is this line wrong for some reason?

self.sweepers = [sweepers] if isinstance(sweepers, Sweeper) else list(sweepers)[::-1]

I was getting an error from this line saying that Sweeper object is not iterable so I stopped the server, added some log.info before (printing sweepers and type(sweepers) I think) and the error disappeared. Than I removed the log.info and now there is no error...
Is this line of code "unsafe" for some reason or have you any idea of why/how something like this could have happened?

First release

I've just noticed we've never tagged Qibosoq.

Since it's proven working, and we start using this even in other places, I'd suggest tagging the current status of main (once properly tested), and release 0.0.1 on PyPI.

Tasks

Future development

Hi, this is just a list of features and modifications that I would like to implement in the future.
They have different priorities and are not in any particular order but still would be nice to have them.
(also I wanted to try the tasklist)

Tasks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.