Coder Social home page Coder Social logo

timetag / eta Goto Github PK

View Code? Open in Web Editor NEW
15.0 2.0 6.0 14.15 MB

ETA is a graphical event-driven programming language for time-tag processing.

Home Page: https://timetag.github.io/

License: GNU General Public License v2.0

Python 2.14% LLVM 3.68% JavaScript 92.64% CSS 0.15% HTML 0.81% NSIS 0.01% C++ 0.56% Shell 0.01% Batchfile 0.01%
time-tag quantum-information quantum-optics signal-processing data-analysis time-series event-driven programming-language instrument-control python

eta's People

Contributors

cyberfly100 avatar gyger avatar linzuzeng avatar lschweickert avatar yun-meng-tju avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

eta's Issues

a visualization feature for the instrument designer

This is probably a more difficult project.
There could be a time tag stream with two channels that indicates the time differences between which photon events are added to the histogram.
We considered adding this as the graphical way of programming, but it was not unambiguous. I think the other way could work though. I think maybe not for crazy complicated experiments, but for the simple ones...
Now the question is how to discriminate which ones to visualize.

Add "New" button to create a new recipe

This could also open a dialogue (popup) with "Don't show me this again" option that guides through the workflow:
Create Hardware Instrument -> create Analysis Instrument -> create Code Panel -> optionally add variables

different aggregators for different data

The current behavior of the aggregation for multi-threading mode would sum all the histograms up

Maybe we can add a do-not-sum mode so that users can decide how to glue the data together

Rename "Display Panel" to "Front Panel"

Now that "Display Panel" does not only display results, we should change it to a more general name
Maybe we can change it to something like "Front Panel", which has controls that allows users to interact with the virtual instruments.

better file format indicator

instead of suffix (ending) matching, we use format="swa" or format="qt" to distinguish swabian instrument files and qutools files.

Browse window opens without focus

If browse window is clicked for the second time after program start (scenario: measure a series of something - analysis stays the same but file chnages) the open file dialogue is opened behind the frontend.

The simple_lifetime recipe is very broken

plotly is not working because it is trying to plot a 2d hist (has been updated on github, but seemingly has not made it into the new version yet.
bokeh is anyways broken and should be replaced by matplotlib
in the instrument designer the X lifetime uses find_start(SYNC) instead of the new start(SYNCS) or start(LAST_SYNC) or infer_start_from_stop().

Proposal for High-Dimensional ETA

  1. RECORDER is the new premitive. CLOCK is two unlinked RECORDERs
  2. h1.record() supports recorder algebra, which states directly the meaning of different axis(dimensions) of the histogram.
  3. record(), by default, performs correlation on all the (unlinked) RECORDERS. Start-stop becomes a special case of correlation where each recorder has only one history cell.
  4. inside a record(), if there are two RECORDERs that are stated to be LINKed together, they are treated as a single entity to be correlated with other free RECORDERs.
  5. record_all() is removed
  6. record(r1-r2) with RECORDER(r1,1), RECORDER(r2,1) is identical to record(c1) with CLOCK(c1,1,1) which gives us at most one count.
  7. record(r1-r2, r3-r4) allows us to safely mix RECORDER(r1,1), RECORDER(r2,1), RECORDER(r3,6626), RECORDER(r4,1) together, which gives us at most 6626 correlation counts once.

display blob diagram shortcuts

there could be a "?" icon in the corner that also shows the "Transitions" and "Actions" from the "Create" menu (we can remove it from there, then)

Planned Changes for ETA-M

  1. RECORDER(), CLCOCK(,1,100) will be removed.
  2. CHANNEL(1) will create a virtual channel 1, emit(1) will emit a signal on this channel.
  3. There will be stacks for storing the divergence, there are three new functions, push_checkpoint(), update_checkpoint(), pop_checkpoint()
  4. There will be a new kind of graph, the ETA-M graph. The graph starts with the diverging blob.
  5. ETA-M graph with only one channel number on every blob will be translated into faster code. Other cases will lead to the code using the stack.
  6. ETA-M graph should only use the virtual channels.
  7. Each ETA-M graph has its own stack and its own sort-free dealy line.
  8. The global sort-free delay line will only be used for driving the state changes on the old ETA graph, or initializing the ETA-M graph.

Planned Changes for ETA realtime

  1. ring buffer should be malloced from python side.
  2. the head-tail of the ring buffer should be accessible from python side.
  3. sort-free dealy line should be a struct, where the buffer should also be malloced from python side.
  4. the reader struct should also be malloced from python side.

ETA with icons

  1. A set of built-in icons will be included in ETA GUI.
  2. There will be a new section in ETA file format that maps the name of the blob to icons.
  3. The drawing panel will read the icon map and uses the corresponding icons for each blob.
  4. A naive scanning method will be applied in the coding panel to automatically change the icon map when the code is being typed.
  5. A partial update system for graphics will be established to connect 3 and 4 so that user can see the updates of icon when typing the code. The partial update is required so that we only update the influenced part of the graph without stucking the GUI
  6. The icon map should be updated accordingly when the blob is renamed ,or removed.

larger blobs

Seems like people would like this and it could also make adding icons easier in the future

make record smart

could record distinguish by itself whether a multi-clock is used to automatically function as record_all?

drop the group feature

I said we never used it and the multiple recipe scheme kind of makes is superfluous.
Thay say unnesessary features should be dropped before a small percentage of the user base starts to like it and gets angy when they are finally dropped because of incompatibility.

Provide a generic file format you support

It would be nice to have a generic file format. E.g. hdf5 with a defined structure that you support aswell. This would allow to read data that was collected differently.

automatically create header/comment for items added via the "create" menu

The resoning is that users that use the create menu are not super familliar with the program, so it should provide some more info.

E.g.:
when a histogram with name h1 and dimension (10000,16) is created it should show up as

HISTOGRAM(h1,(10000,16)) #HISTOGRAM(name, (number of bins, bin size))

this could also be done as a tooltip, but i assume that that would be way more difficult

add a browse functionality for adding a file-variable

the file variable would then obviously be a special variable since no one wants to browse for the binsize, but a file is needed for every analysis anyways. Maybe it could already be there in an empty recipe.
For batch mode we can just split the folder off of the file, then the user has to select a random file in the folder that he/she wants the batch mode to be run on.

Missing Source File for the LLVM /ll/

It seems the files to generate the files in the ll directory are not tracked or can not be found in the repository.

Wanted to check something on parsing the file headers, did not find the necessary information.

simple_cut does not like a pathlib.Path object

It seems simple_cut does not like a path from pathlib. I run the following command.
cut=eta.simple_cut(Path(file), 4) and get the following error.

ERROR:__main__:encoding or errors without a string argument
Traceback (most recent call last):
  File "eta_runtime.py", line 141, in process_eta
  File "<string>", line 11, in <module>
  File "eta_runtime.py", line 227, in simple_cut
TypeError: encoding or errors without a string argument

ETA popup for plotly

Lucas said:

did plotly always open in my main browser? Could it open in an ETA popup? I feel that would improve compatibility (the view result button is at the moment not doing anything on our win7 computer that has the correlators attached)

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.