Metadata-Version: 2.1
Name: waveforms
Version: 1.6.1
Summary: Edit waveforms used in experiment
Author-email: feihoo87 <feihoo87@gmail.com>
Maintainer-email: feihoo87 <feihoo87@gmail.com>
License: MIT License
Project-URL: Homepage, https://github.com/feihoo87/waveforms
Project-URL: Bug Reports, https://github.com/feihoo87/waveforms/issues
Project-URL: Source, https://github.com/feihoo87/waveforms/
Keywords: signal,waveform,experiment,laboratory
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: antlr4-python3-runtime (==4.12.0)
Requires-Dist: click (>=7.1.2)
Requires-Dist: cryptography (>=3.4.7)
Requires-Dist: dill (>=0.3.6)
Requires-Dist: GitPython (>=3.1.14)
Requires-Dist: numpy (>=1.13.3)
Requires-Dist: ply (>=3.11)
Requires-Dist: scipy (>=1.0.0)
Provides-Extra: docs
Requires-Dist: Sphinx ; extra == 'docs'
Requires-Dist: sphinxcontrib-napoleon ; extra == 'docs'
Requires-Dist: sphinxcontrib-zopeext ; extra == 'docs'
Provides-Extra: full
Requires-Dist: blinker (>=1.4) ; extra == 'full'
Requires-Dist: matplotlib (>=3.4.1) ; extra == 'full'
Requires-Dist: openai (>=0.27.0) ; extra == 'full'
Requires-Dist: portalocker (>=1.4.0) ; extra == 'full'
Requires-Dist: SQLAlchemy (>=1.4.11) ; extra == 'full'
Requires-Dist: scikit-learn (>=0.24.1) ; extra == 'full'
Requires-Dist: scikit-optimize (>=0.8.1) ; extra == 'full'
Requires-Dist: tenacity (>=8.2.2) ; extra == 'full'
Requires-Dist: tiktoken (>=0.3.3) ; extra == 'full'
Provides-Extra: test
Requires-Dist: pytest (>=4.4.0) ; extra == 'test'

# waveforms
[![View build status](https://github.com/feihoo87/waveforms/actions/workflows/workflow.yml/badge.svg)](https://github.com/feihoo87/waveforms/)
[![Coverage Status](https://coveralls.io/repos/github/feihoo87/waveforms/badge.svg?branch=master)](https://coveralls.io/github/feihoo87/waveforms?branch=master)
[![PyPI version](https://badge.fury.io/py/waveforms.svg)](https://pypi.org/project/waveforms/)

Form waveforms used in experiment.

## Installation
We encourage installing waveforms via the pip tool (a python package manager):
```bash
python -m pip install waveforms
```

To install from the latest source, you need to clone the GitHub repository on your machine.
```bash
git clone https://github.com/feihoo87/waveforms.git
```

Then dependencies and `waveforms` can be installed in this way:
```bash
cd waveforms
python -m pip install numpy
python -m pip install -e .
```

## Usage
```python
import numpy as np
import matplotlib.pyplot as plt

from waveforms import *

pulse = cosPulse(20e-9)

x_wav = zero()
y_wav = zero()

I, Q = mixing(0.5*pulse, freq=-20e6, DRAGScaling=0.2)
x_wav += I
y_wav += Q

I, Q = mixing(pulse >> 1e-6, freq=-20e6, phase=np.pi/2, DRAGScaling=0.2)
x_wav += I
y_wav += Q

I, Q = mixing((0.5 * pulse) >> 2e-6, freq=-20e6, DRAGScaling=0.2)
x_wav += I
y_wav += Q


t = np.linspace(-1e-6, 9e-6, 10001)
plt.plot(t, x_wav(t))
plt.plot(t, y_wav(t))
plt.show()
```

## Reporting Issues
Please report all issues [on github](https://github.com/feihoo87/waveforms/issues).

## License

[MIT](https://opensource.org/licenses/MIT)
