Saravanan666/pypi-org huggingface dataset:
Package: pqcryptography
PQCryptographyThis library was written due to rising threat of quantum computing.
It main goal is to create easy wrapper of liboqs to spread post quantum cryptographyInstallationpipinstallpqcryptographyHow to use pqcryptographyImportingimportpqcryptographyaspqcGenerating keys / signspublic_key,private_key=pqc.encryption.generate_keypair()public_sign,private_sign=pqc.signing.generate_signs()Just like in any other asymmetric encryption library.Encryption and decryptionHow encryption workmessage="Test Message"encrypted_message=pqc.encryption.encrypt(public_key,message.encode("utf-8"))Please take into consideration that message needs to be encoded before encryption. Here I used utf-8 encoding. Alternatively you can use raw bytes for message.
Also encryption of message increases its size exactly by 1600 bytes. This is because AES-256 nonce and tag is stored at the beginning of the message.encrypted_messagetype is bytes.How decryption workretrieved_message=pqc.encryption.decrypt(private_key,encrypted_message)print(retrieved_message.decode("utf-8"))retrieved_messageneeds to be decoded if you didn't encrypt raw bytes.
Output is "Test Message"Signing and verifyingHow signing workssigned_message=pqc.signing.sign(private_sign,message.encode("utf-8"))signed_messagetype is bytes. Signature is appended to the message and its size will vary from algorithm to algorithm. Here's how to get it's size:print(pqc.signing.get_details()["length_signature"])How verification worksSo we got our message. That is how we should verify that it is legit:verified_message=pqc.signing.verify(public_sign,signed_message)print(verified_message.decode("utf-8"))verified_messageis just encodedmessagewith signature stripped.
If message was tampered with verify function will raiseAssertionErrorUsing non-default algorithmSo you want to change encryption/signing algorithm? Sure! Just use keywordalgorithm. It is supported for every function exceptget_algorithms()Default algorithmsDefault encryption algorithm isKyber1024. Default signing algorithm isDilithium5AlgorithmsIf you don't want to use default algorithm you can pick one from the algorithm list.print(pqc.encryption.get_algorithms())print(pqc.signing.get_algorithms())Note: Results are incomplete and probably outdated. You should run the code yourself['BIKE-L1','BIKE-L3',...,'FrodoKEM-1344-AES','FrodoKEM-1344-SHAKE']['Dilithium2','Dilithium3',...,'SPHINCS+-SHAKE-256f-simple','SPHINCS+-SHAKE-256s-simple']so you don't trust me bro?This package usesunofficialliboqs python packagewhich is shipped with precompiledoqslibraries. You can not be certain that those binaries aren't malicious so you want to build your own. You can build binaries by following build instructions atoqs official repositoryand replace.so/.dllfiles in the package folder (python_directory/site-packages/liboqs/).Im using pyinstaller / nuitka and it doesnt workJust copy.so/.dllfiles from liboqs package folder (python_directory/site-packages/liboqs/) to your executable folder and it will load files from your local directory.
Package: pq-dashboard
pq-dashboardpq-dashboardis a general purpose, lightweight,FastAPI-based web front-end and CLI tool to monitor yourPQqueues and tasks.Sound familiar?Basically,pq-dashboardis topqasrq-dashboardis torq.QuickstartInstalling from PyPIpython -m pip install pq-dashboardThen runpq-dashboardwith no arguments, which will start the server.$ pq-dashboardYou may need to configure environment variables (see below) to connect to the PostGRES server where yourpqqueues are stored.Using dockerpq-dashboardcan run as a docker container. The image can be built with./scripts/build-image.sh. This creates thepq-dashboard:v0image.The easiest way to run locally is to use the host network:docker run --net=host pq-dashboard:v0The app will then be available on host port9182by default. In production, you may want to configure networking differently.An environment file can be passed todockerlike this:docker run --env-file=.pq-dash.env --net=host pq-dashboard:v0CLI tool usageThepq-dashboardcommand can also be used as a CLI tool for basic queue management.$ pq-dashboard stats|cleanup|cancel-all <comma-separated list of queue names>For more details, see the help messages on all the commandsEnvironment variablespq-dashboardwill read config from environment variables prefixed withPQ_DASH.VariableDefault valueExplanationPQ_DASH_PGHOSTlocalhostHost the PostgreSQL server is running on.PQ_DASH_PGPORT5432Port the PostgreSQL server is running on.PQ_DASHBOARD_PGUSERpostgresPostgreSQL user name to connect as.PQ_DASHBOARD_PGPASSWORDpostgresPassword for the PostgreSQL user.PQ_DASHBOARD_DATABASEpostgresPostgreSQL database name containing queue tablePQ_DASHBOARD_QUEUE_TABLEqueueName of queue table containing itemsAlternatively, these variables can be stored in a plaintext.pq-dash.envfile. Enviroment variables
will take precedence over the.envfile.DevelopmentTo install dev dependencies, use:poetry installThen, install thepre-commithook:pre-commit installThis ensures all commits will be linted properly.To run the dev frontend, from thepq_dashboard/frontenddirectory run:npm run devthen to start the backend:uvicorn pq_dashboard.main:app --reload --port 9182The backend statically serves the frontend, but you will need to refresh the page to see your changes in the frontend code.
Package: pqdict
A priority queue dictionary maps hashable objects (keys) to priority-determining values. It provides a hybrid dictionary/priority queue API.The priority queue is implemented as a binary heap of (key, priority value)
pairs, which supports:O(1) search for the item with highest priorityO(log n) removal of the item with highest priorityO(log n) insertion of a new itemAdditionally, an index maps elements to their location in the heap and is kept
up to date as the heap is manipulated. As a result, pqdict also supports:O(1) lookup of any item by keyO(log n) removal of any itemO(log n) updating of any item’s priority levelDocumentationDocumentation is available athttp://pqdict.readthedocs.org/en/latest/.LicenseThis module is released under the MIT license. The augmented heap implementation was adapted from theheapqmodule in the Python standard library, which was written by Kevin O’Connor and augmented by Tim Peters and Raymond Hettinger.
Package: pqdm
Parallel TQDMPQDM is a TQDM and concurrent futures wrapper to allow enjoyable paralellization of
iterating through an Iterable with a progress bar.Free software: MIT licenseDocumentation:https://pqdm.readthedocs.io.Install & UseTo installpip install pqdmand usefrom pqdm.processes import pqdm
# If you want threads instead:
# from pqdm.threads import pqdm

args = [1, 2, 3, 4, 5]
# args = range(1,6) would also work

def square(a):
    return a*a

result = pqdm(args, square, n_jobs=2)For more examples variants check theUsagesection of the docs.Featuresparellize your tqdm runs using processes or threads thanks to concurrent.futures,just importpqdmfrompqdm.threadsorpqdm.processesto start,automatic usage oftqdm.notebookwhen iPython/Jupyter notebook environment detected, custom tqdm class acceptedautomatic parsing ofpqdmkwargs and separating betweenconcurrent.Executorargs andtqdmargs,support for any iterable and passing items as kwargs, args or directly to function which is being appliedsupport bounded exectutors viahttps://github.com/mowshon/bounded_pool_executorCreditsThis package was created withCookiecutterand theaudreyr/cookiecutter-pypackageproject template.History0.2.0 (2022-02-14)Adds exception handlingAllows using custom tqdm_class (like tqdm_discord)Minor fixes0.1.0 (2020-03-07)Some updates in progress reporting and documentation.0.0.1 (2020-03-05)First release on PyPI.
Package: pqdpy
pqdpyPower quality disturbances dataset generatorInstallation$pipinstallpqdpyUsageTODOContributingInterested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.Licensepqdpywas created by Rafael Angel Montoya Gutierrez. It is licensed under the terms of the GNU General Public License v3.0 license.Creditspqdpywas created withcookiecutterand thepy-pkgs-cookiecuttertemplate.
Package: pqgit
pqgit (Python Qt Git)pqgit is a graphical git browser. It shows the branches and the commit log of a repo. It also shows diffs or launches an external differ (default: meld) to do that.Installationpip install pqgitUsageWhen you first run pqgit, it shows a file open dialog; open the .git directory of your project. Change project with Ctrl+O.You can select one or two commits in the history panel (diff to parent or to each other).Double-click on some file to open the external differ.Change branch by selecting one. Be aware thatthis actually does a checkout!It will not delete your working files (I hope :D), but will leave the repo on that branch. I don't like it, but that's how pygit2 behaves (at least I couldn't find out how to just display some branch without checking it out)ConfigurationNot much at the moment.To change the default diff tool, set it in~/.config/pqgit/config.ini, like:[General]
diff_tool=bcompare
...ScreenshotContributingThis project usestabs. Please use the included.style.yapfand.pylintrcIf you want to change the UI, editpqgit.uiwith Qt Designer, then run:pyside2-uic pqgit.ui >| src/pqgit/ui.pyWheel package (for PyPi / installing with pip)Install locallypip install -e .Create packages for PyPipython3 setup.py sdist bdist_wheel
pip install --force-reinstall --no-deps dist/pqgit-<VERSION>-py3-none-any.whl
Package: pqi
____,.---._.=-.-..-`.' ,`.  ,-.'-,`./==/_//==/,-\/==/,-\|==|,||==|_.=.|==|-.=.,||==|||==|,'=',|==|:;=:-||==|-||==|-'..'|==|,'=',||==|,||==|,|\==\_-;|==|-|/==/-|'.='.,;-\/==/./`--`---'       `--`--''`--`--`-`----byHangfengYangpqi: a terminal tools for Python:globe_with_meridians:由于国内通过pip下载python包的速度真的很慢，很容易因为超时而失败，而pqi可以把PyPi源迅速切换为国内源tuna, douban, aliyun, ustc从而大大加快python包的安装速度，提速效果见下图所示。怎么使用(兼容py2/py3/linux/windows/MacOS)1.安装方法一（推荐）>>> pip install pqi方法二>>> git clone https://github.com/yhangf/PyQuickInstall.git
>>> python3 setup.py install2. 命令行输入pqi回车>>> pqi
Usage:
  pqi ls
  pqi use <name>
  pqi show
  pqi add <name> <url>
  pqi remove <name>
  pqi (-h | --help)
  pqi (-v | --version)
Options:
  -h --help        Show this screen.
  -v --version     Show version.列举所有支持的PyPi源>>> pqi ls改变PyPi源>>> pqi use <name>例子，比如运行pqi use tuna即把当前PyPi源改为清华的PyPi源显示当前PyPi源>>> pqi show添加新的pip源(如添加USTC源）>>> pqi add ustc https://mirrors.ustc.edu.cn/pypi/web/simple移除pip源（如官方PyPi源）>>> pqi remove pypi3. 升级到最新版pqi>>> pip install --upgrade pqiLICENSEMIT
Package: pqinfo
A skeleton command line program in Python.PurposeThis is a skeleton application which demonstrates how to properly structure a
Python CLI application.I’ve done my best to structure this in a way that makes sense formostusers,
but if you have any feedback, please open a Github issue and I’ll take a look.The idea with this project is that you should be able to use this as a template
for building new CLI apps.You can fork this project and customize it to your liking, or just use it as a
reference.UsageIf you’ve cloned this project, and want to install the library (and all
development dependencies), the command you’ll want to run is:$ pip install -e .[test]If you’d like to run all tests for this project (assuming you’ve written
some), you would run the following command:$ python setup.py testThis will triggerpy.test, along with its popularcoverageplugin.Lastly, if you’d like to cut a new release of this CLI tool, and publish it to
the Python Package Index (PyPI), you can do so
by running:$ python setup.py sdist bdist_wheel
$ twine upload dist/*This will build both a source tarball of your CLI tool, as well as a newer wheel
build (and this will, by default, run on all platforms).Thetwine uploadcommand (which requires you to install thetwinetool) will then securely upload your
new package to PyPI so everyone in the world can use it!
Package: pqinput
Python package to generate and modify QDng calculations inputs in xml formatModule:inpxml.py:InpXMLClass with methods to write and editxmlstructures designed as input files for quantum chemistry calculations on QDng package.
Requireslxml.Example:In:Tf = 25 # [fs]
dt = 0.25 # [fs]
steps = Tf*41.34/dt
Nfiles = 5e2
wcycle = int(steps/Nfiles)
mass = 1764.30

propa_params = {'dt': dt, 'steps': int(steps), 'wcycle': wcycle, 
            'dir': 'example_directory/', 'nfile': 'norm'}

T00 = {'head':'T', 'name':'Sum', 'mass':mass, 'key':'T'}
V00 = {'head':'V', 'name':'Sum', 'file':'MgH/pots/pot_Sig_0'}
m00 = {'head':'m0', 'name':'Sum', 'Opes':[T00, V00]} 
T11 = {'head':'T', 'ref':'T'}
V11 = {'head':'V', 'name':'Sum', 'file':'MgH/pots/pot_Sig_1'}
m11 = {'head':'m1', 'name':'Sum', 'Opes':[T11, V11]} 
m22 = {'head':'m2', 'name':'Sum', 'Opes':[T11, V11]} 
m10 = {'head':'m10', 'name':'GridDipole', 'file':'mu', 'laser':'Et', 'Opes':[]} 

H_params = {'type':'Multistate', 'Mels':[m00, m11, m10, m22]} 
Hsum = {'type':'Sum', 'Opes':[T00, V00, T00]} 
wf, ef, vib =   [1, ], ['Sig0',], [1, ] # args['wf'], args['ef'], , args['vib'] #
WF_params = {'type':'Multistate', 'states':'1',
         'file':["MgH/efs_{}/ef_{}".format(ef[i], vib[i]) for i in range(len(ef))], 
         'index':[wf[i] for i in range(len(wf))], 'normalize':True}
filter_opes = [{'expeconly':{'name':'Multistate', 'states':WF_params['states'], 'unity':'False', 'header':"mu{}".format(ind)}, 
               'm{}'.format(ind):{'name':'GridPotential', 'file':'MgH/mu/mu_Sig0Sig1'}}
               for ind in [2.1,] ]
#%%
# Initialize
prop = InpXML()
prop.program('propa', propa_params, WF_params)
prop.propagation('Cheby', H_params)
prop.filter('filterpost', filter_opes)
prop.show

# Editing
prop.hamilt = 'name', 'something'
prop.hamilt = 'm0.0/T', 'name', 'something_new'
prop.show
 
# Writing to file
# prop.writexml(filename='filename', txt=True)Out:<qdng><propadt="1"steps="1000"dir="efs_g"Nef="20"conv="1e-11"><propagatorname="Cheby"><hamiltonianname="Multistate"><m0.0name="Sum"><Tname="GridNablaSq"mass="2000"key="T"/><Vname="GridPotential"file="pot_Vg"/></m0.0><m1.1name="Sum"><Tref="T"/><Vname="GridPotential"file="pot_Vg"/></m1.1><m1.0name="GridDipole"file="mu"laser="Et"/><m2.2name="Sum"><Tref="T"/><Vname="GridPotential"file="pot_Vg"/></m2.2></hamiltonian></propagator><wfname="Multistate"states="3"normalize="true"><wf1file="MgH/efs_Sig0/ef_1"/></wf><filterpost><expeconlyname="Multistate"states="1"unity="False"header="mu2.1"><m2.1name="GridPotential"file="MgH/mu/mu_Sig0Sig1"/></expeconly></filterpost></propa></qdng><qdng><propadt="1"steps="1000"dir="efs_g"Nef="20"conv="1e-11"><propagatorname="Cheby"><hamiltonianname="something"><m0.0name="Sum"><Tname="something_new"mass="2000"key="T"/>...
Package: pq-json
pq-jsonpq is a Python command-line JSON processor -almostlike (atleast inspired by 🐶️)jq, but using Python focusing on simplicity and convenience with familiar syntax.Installpip install pq-jsonHere is a simple example for parsing JSON. Output from pq is pretty printed usingRich.$ echo '{"text": "Text here", "header": "Header", "list": [1,2,3]}' | pq{"text":"Text here","header":"Header","list":[1,2,3]}FiltersThe processing is handled with filters, like in jq.
j represents the current input object in a filter.$ echo '{"example": "data", "nothing": "interesting"}' | pq "j['example']""data"$ echo '{"example": "data", "nothing": "interesting"}' | pq "j['example']""data"As default, None will not be passed.$ echo '{"example": "data", "nothing": "interesting"}' | pq "j.get('nada')"List slicingJSON arrays are converted to Python list.$ echo '[{"name": "eric", "age": 22}, {"name": "daniel", "age": 44}]' | pq "j[0]"{"name":"eric","age":22}$ echo '[{"name": "eric", "age": 22}, {"name": "daniel", "age": 44}]' | pq "j[-1]"{"name":"daniel","age":44}An array always iterates to the next filter. Here we are using the slice symbol [:] to highlight that we are working with an array.$ echo '[{"name": "eric", "age": 22}, {"name": "daniel", "age": 44}]' | pq "j[:]"{"name":"eric","age":22}{"name":"daniel","age":44}Want to send the full array to the next filter? Wrap array around[]brackets like:$ echo '[1,2,3,4,5]' | pq "[j[:]]"[1,2,3,4,5]PipesPipes let you chain multiple filters by produce output to the filter to the right of the pipe. Under the hood a pipeline is a chain of generators. An array will for example yield multiple elements to the right.input:["a","b","c","d"]pq "j[0:2] | j.upper()"
      |         |
   filter1   filter2

produces the following result:
"A"
"B"

In this case, the expression j.upper() will be run each time.

j[0] -> "a".upper() -> "A"
j[1] -> "b".upper() -> "B"

Another example:

$ echo '[1,2,3,4,5,6,7,8,9]' | pq 'j[:] | j**2+50'51545966758699114131Array constructsAbove example outputs a list of integers. It's possible to wrap it all into a single array by using [] around the full expression.$ echo '[1,2,3,4,5,6,7,8,9]' | pq '[j[:] | j**2+50]'[51,54,59,66,75,86,99,114,131]Object constructs$ echo '{"name":"jan", "age":4, "parents": ["lisa", "dan"]}' | pq '{"name": j["name"], "parents": j["parents"]}'{"name":"jan","parents":["lisa","dan"]}Custom modulesIt's possible to add additional modules to global scope from file or input string.
We can declare a variable for example.echo '[1,2,3]' | pq --module 'two=2' 'j[1]*two'4Other examplesWe can easily use built-in functions in Python$ echo "[1,2,3,4,5,6]" | pq 'sum(j) | {"total": j}'{"total":21}
Package: pqkmeans
PQk-means [Matsui, Ogaki, Yamasaki, and Aizawa, ACMMM 17] is a Python library for efficient clustering of large-scale data. By first compressing input vectors into short product-quantized (PQ) codes, PQk-means achieves fast and memory-efficient clustering, even for high-dimensional vectors. Similar to k-means, PQk-means repeats the assignment and update steps, both of which can be performed in the PQ-code domain.
For a comparison, we provide the ITQ encoding for the binary conversion and Binary k-means [Gong+, CVPR 15] for the clustering of binary codes.
The library is written in C++ for the main algorithm with wrappers for Python. All encoding/clustering codes are compatible with scikit-learn.
Package: pqmarkup
pqmarkup is a lightweight markup language, based on paired quotes characters: ‘ and ’.It can be converted to HTML using this implementation.Additional information available on theofficial site.пк-разметка\pqmarkup — это облегчённый язык разметки текста, основанный на одиночных парных кавычках — символах ‘ и ’.Отформатированный текст на этом языке разметки может быть преобразован в HTML посредством данной реализации.Дополнительная информация доступна наофициальном сайте.
Package: pqmusic
PQMusichttps://github.com/son-link/PQMusicPQMusic is a minimalist and easy to use audio player for download and use.You can play your local files, from a direct url or streaming (for example a online radio) and import/export playlists on M3U format. Also you can play some music trackers files (.it, .mod, .s3m and .xm)Adding files from Open with on your file managerDrag and drop files to PQMusic's window:Only available for Linux.Licensed under GNU/GPL3 or higher.InstallFrom source code:Clone the repo, download the zip under Code -> Download ZIP or download the last release.Open a terminal and go to the project folder.Install the dependencies:From PIP:pip install -r requirements.txtuse the --user parameter if you want to install the dependencies at your user levelDebian/Ubuntu/Mint/MX Linux:apt:apt install python3-pyqt5 python3-pyqt5.qtmultimedia libqt5multimedia5 libqt5multimedia5-plugins qtgstreamer-plugins-qt5 python3-mutagen python3-magic python3-requestsArch Linux/Manjaro:pacman:python-pip python-mutagen python-pyqt5 qt5-multimedia python-mutagen python-magic python-requestsCopy the icon and desktop file:All users:install -m 644 bin/io.sonlink.pqmusic.desktop /usr/share/applicationsinstall -m 644 bin/io.sonlink.pqmusic.svg /usr/share/icons/pqmusic.svgCurrent user:cp bin/io.sonlink.pqmusic.desktop ~/.local/share/applicationscp bin/io.sonlink.pqmusic.svg ~/.icons/pqmusic.svgFrom Pypi:pip install PQMusicAUR:If you use Arch Linux, Manjaro, or other Arch Linux base distributions, you can install the official package fromAURFor example:yay -S pqmusicExecutables:You can download aAppImageforGNU/Linuxonreleases pageCommand line options:--custom-theme: Use the application's theme instead of using the environment or default Qt theme-f | --files <files and/or dirs>: Add files and/or directories for direct playback at startupShortcuts:Ctrl+O: Add filesCtrl+D: Add dirCtrl+U: Add URLCtrl+P: Open playlistCtrl+C: Open config dialogCtrl+Q: QuitOther credits:Lüv icons theme:https://github.com/Nitrux/luv-icon-themeOpen Sans font:https://fonts.google.com/specimen/Open+SansQssStylesheetEditorfor make the app themeMusical note use in the app icon:https://openclipart.org/detail/110599/musical-note-2-dennis-b-01r
Package: pqnha_cozinha
## pqnha_cozinha—
py_cozinha é parte de um sistema que etou desenvolvendo para auxiliar tarefas administrativas e a logística
de funcionamento de restaurantes e lanchonetes.
O sistema se divide em três partes:
O nome que dei ao sistema como um todo é paçoquinha.—Pedidos, atendimento.Cozinha, bar.Adminisreação/caixa.—
## Essa parte do sistema tem a finalidade de enviar os pedidos a cozinha.O sistema tem por objetivo o uso de software livre e sistemas linux.
Também temos a intenção de construir integração com a plataforma android.
* Este software tem dentre outras a finalidade educacional.
* Academia do Software livre (São Lourenço - Minas Gerais).—
Visite  <http://www.asl-sl.com.br>
Colaboradores:
Leonardo de Araújo Lima
<leonardo@asl-sl.com.br>
Package: pqos
Python interface for Intel(R) RDT PQoS libraryContentsOverviewInstallationRunning testsLegal DisclaimerOverviewThis a Python interface for PQoS library. This wrapper requires Python 3.x
and libpqos installed in the system. The package is named 'pqos'.InstallationTo build the package:pip install build
python -m buildOnce the package is built, it can be installed by running:pip install dist/pqos-<VERSION>.tar.gzRunning testsIn order to run unit tests, create coverage report or check coding style
it is required to setup virtual environment first. All of the following commands
will setup it if it has not been created yet. The virtual environment
will be created intest_env/.To setup test environment:make setup-devTo run unit tests:make testAfter running unit tests, the coverage report can be generated:make coverageTo check coding style with pylint run:make styleTo clear a virtual environment and remove cache files:make cleanLegal DisclaimerTHIS SOFTWARE IS PROVIDED BY INTEL"AS IS". NO LICENSE, EXPRESS OR
IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS
ARE GRANTED THROUGH USE. EXCEPT AS PROVIDED IN INTEL'S TERMS AND
CONDITIONS OF SALE, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL
DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR
USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO
FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT
OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
Package: pqp
PQPThe namepqpis short forPourquoi pas?. This phrase is French forwhy not?, because "Why not?" was the question we asked ourselves when we found there was no maintained, open-source package for structural causal modeling in Python. The package provides a convenient interface for causal modeling along with routines for identification, estimation, and visualization.InstallationThe package can be installed from PyPi usingpip:pipinstallpqpBasic Usagefrompqp.graphimportGraphfrompqp.variableimportmake_vars# create variablesx,y,z=make_vars("xyz")# the backdoor modelg=Graph([x<=z,y<=z,y<=x,])# identificationcausal_estimand=ATE(y,{x:1},{x:0})estimator=g.identify(causal_estimand)print(estimator)# >>> E_(y) [ Σ_(z) [ [P(x = 1, y, z) * P(z) / P(x = 1, z)] ] ] - E_(y) [ Σ_(z) [ [P(x = 0, y, z) * P(z) / P(x = 0, z)] ] ]Further ReadingFor more information, see the documentation athttps://leo-ware.github.io/pqp/.The source code is available athttps://github.com/leo-ware/pqp.AboutThis package was created by Leo Ware as part of his undergraduate capstone project at Minerva University.