semvec/pypi-packages huggingface dataset:
pcassie 0.1.7
A Pincipal Component Pipeline based on Damiano et al. 2019

# pcassie

[![Documentation Status](https://readthedocs.org/projects/pcassie/badge/?version=latest)](https://pcassie.readthedocs.io/en/latest/?badge=latest)
[![codecov](https://codecov.io/github/kenny-phan/pcassie/branch/main/graph/badge.svg?token=BDQ5Q08DWU)](https://codecov.io/github/kenny-phan/pcassie)
[![image](http://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/kenny-phan/pcassie/blob/main/LICENSE)

You can install ``pcassie`` with:
``pip install pcassie ``

Code based on M. Damiano, G. Micela, and G. Tinetti (2019). _[A Principal Component Analysis-based Method to Analyze High-resolution Spectroscopic Data on Exoplanets
](https://doi.org/10.3847/1538-4357/ab22b2)_

Originally developed for CRIRES+ data. Pipeline run time depends on the resolution and number of spectra and detectors in your dataset. For a dataset of 31 spectra and 14 detectors from CRIRES+, sampling to the optimal PCA components in the time-domain space takes 5-7 minutes. 

The code is structured as follows. All programs are .py files in the 'pcassie' folder. pipeline.py compiles the nessecary functions into one 'pipeline' function. The pipeline function optionally recalibrates the pixel-wavelength relation of the data spectrum to a telluric model from EsoSky (Noll et al. 2012, Jones et al. 2013), then will perform PCA subtraction on the data (from pca_subtraction.py) and cross-correlation with a user input simulated spectrum (from ccf.py). Typically you would like to sample PCA components for the optimal reduction; this can be accomplished via 'sample_full_pca_components', which runs 'pipeline' and removes the first and last components until the peak of the signal-to-noise matrix (refer to [Damiano et al. (2019)](https://iopscience.iop.org/article/10.3847/1538-4357/ab22b2/pdf) for details) is maximized. For the development of this codebase, I used MultiRex (Duque-Castaño et al. 2024), a straightforward implementation of TauRex (Al-Refaie et al. 2019). There are additional functions to inject the data with the simulated spectrum and perform a Welch's T-test in ccf.py.  

## Helpful Documents in order of relevance
Damiano (2018), Sec. 3.2, 5.3, 5.4, 5.5, 5.6. _[From space to ground (thesis)](https://discovery.ucl.ac.uk/id/eprint/10066066/7/Mario_Damiano_Thesis.pdf)_

Duque-Castaño et al. (2024). [Machine-assisted classification of potential biosignatures in Earth-like
exoplanets using low signal-to-noise ratio transmission spectra (MultiRex)](https://arxiv.org/pdf/2407.19167)

Kipping & Benneke (2025). _[Exoplaneteers Keep Overestimating Sigma Significances](https://arxiv.org/pdf/2506.05392)_

## Generally Helpful Links
[NASA Exoplanet Archive](https://exoplanetarchive.ipac.caltech.edu/), helpful for exoplanetary parameters.

[ESO Exposure Time Calculator](https://www.eso.org/observing/etc/), helpful for identifying detectors on ESO instruments most affected by tellurics.

[ESO SkyCalc](https://www.eso.org/observing/etc/bin/gen/form?INS.MODE=swspectr+INS.NAME=SKYCALC), helpful to get a telluric model.
gshock-api 2.0.36
Python API for GShock Watches using BLE
Requires Python: >=3.12

gshock_api
================

Announcement
============

The library now supports sending application-level notifications to watches that support it, namely:

* DW-H5600
* GBD-H2000
* GBD-200
* GBD-100
* GBD-800
* GBD-100BAR
* GBX-100

The new API is **send_app_notification** function. 
See the `examples/api_test.py <https://github.com/izivkov/gshock_api/blob/main/src/examples/api_tests.py#L453-L456>`_ file for usage examples.

Only the **DW-H5600** watch has been tested. If you have any of the watches supporting notifications, please let me know your findings.


Overview
========
This is a **Python API library** for G-Shock watches that support Bluetooth Low Energy (BLE) communication.

G(M)W-5600, G(M)W-5000, GA-B2100, GA-B001-1AER, GST-B500, GST-B200, MSG-B100, 
G-B001, GBD-H1000 (Partial support), MRG-B5000, GCW-B5000, GG-B100, ABL-100WE, 
Edifice ECB-30, ECB-10, ECB-20, most Edifice watches, most Protrek models.

It can perform the following tasks:

- Set watch's time
- Set Home Time (Home City)
- Set Alarms
- Set Reminders
- Set watch's settings.
- Get watch's name
- Get watch's battery level
- Get Watch's temperature
- Get/Set watch's Timer
- Send notifications to watch (supported models)

Running the tests
=================

To run the test do the following:

   .. code-block:: sh

      uv run src/examples/api_tests.py

or activate `venv`` first and then run using python:

   .. code-block:: sh

      source .venv/bin/activate
      python src/examples/api_tests.py

Installing the library for your project:
========================================

Add dependency on this library in your `pyproject.toml`

.. code-block:: sh

   dependencies = [
      "gshock-api>=2.0.36",
      ...
   ]


Troubleshooting:
================
If your watch cannot connect, and the 
**`--multi-watch`** parameter is not used, remove the **`config.ini`** file and try again.
gf2-irreducibles 0.1.3
Lookup table for low-weight binary irreducible polynomials (GF(2^n)).
Requires Python: >=3.6

# gf2-irreducibles 🔐

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python Versions](https://img.shields.io/pypi/pyversions/gf2-irreducibles.svg)](https://pypi.org/project/gf2-irreducibles/)

A zero-dependency, high-performance lookup library for **low-weight binary irreducible polynomials** over $GF(2)$.

This library contains a pre-computed database of polynomials for degrees $n$ where $2 \le n \le 10,000$. It is designed for researchers and engineers working in cryptography (ECC, finite field arithmetic) who need instant access to standard irreducible polynomials without expensive runtime testing.

## 🚀 Installation

```bash
pip install gf2-irreducibles
````

## 📖 Usage

### Basic Lookup

Retrieve the minimal weight polynomial for a given degree.

```python
import gf2_irreducibles as gf2

# Get the polynomial for degree 8
poly = gf2.get_poly(8)

print(f"Polynomial: {poly}")
# Output: x^8 + x^4 + x^3 + x^1 + 1

print(f"Integer:    {poly.to_int()}")
# Output: 283  (useful for bitwise operations)

print(f"Hex:        {poly.to_hex()}")
# Output: 0x11b
```

### Checking Availability

```python
if gf2.has_degree(123):
    print("Polynomial found!")
```

### LaTeX Output for Papers

Useful for copying formulas directly into academic papers or reports.

```python
# Generate LaTeX string for documentation
print(poly.to_latex())
# Output: x^{8} + x^{4} + x^{3} + x + 1
```

## 📚 Data Source

The polynomial data is derived from the technical report:

> **"Table of Low-Weight Binary Irreducible Polynomials"** \> *Gadiel Seroussi* \> Hewlett-Packard Systems Laboratory, Report HPL-98-135, August 1998.

This library implements the data tables presented in the report, providing:

  * **Trinomials** ($x^n + x^k + 1$) where they exist.
  * **Pentanomials** ($x^n + x^{k_1} + x^{k_2} + x^{k_3} + 1$) where trinomials do not exist.

Among those of minimum weight, the polynomial listed is the one where the intermediate degrees are lowest (lexicographically first).

## ⚡ Performance

  * **O(1) Lookup:** Uses a static hash map. No irreducibility tests are performed at runtime.
  * **Zero Dependencies:** Pure Python, standard library only.
  * **Lightweight:** Minimal memory footprint.

## 🤝 Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

## 📄 License

[MIT](https://choosealicense.com/licenses/mit/)
python-gdsii 0.2.3
GDSII manipulation library

python-gdsii --- a GDSII manipulation library
=============================================

python-gdsii is a library that can be used to read, create, modify and save
GDSII files. It supports both low-level record I/O and high level interface to
GDSII libraries (databases), structures, and elements.

This package also includes scripts that can be used to convert binary GDS file
to a simple text format (gds2txt), YAML (gds2yaml), and from text fromat
back to GDSII (txt2gds).

Usage
-----

For most cases interface provided by Library class from gdsii.library should be
enough. Here is a small example::

    from gdsii.library import Library
    from gdsii.elements import *

    # read a library from a file
    with open('file.gds', 'rb') as stream:
        lib = Library.load(stream)

    # let's move the first structure to a new library
    new_lib = Library(5, b'NEWLIB.DB', 1e-9, 0.001)
    struc = lib.pop(0) # libraries and structures are derived from list class
    new_lib.append(struc)

    # let's also add some elements...
    # Note: first and last points in the boundary should be the same
    #       this is required by GDSII spec.
    struc.append(Boundary(45, 0, [(-100000, -100000), (-100000, 0), (0,0), (0, -100000), (-100000, -100000)]))

    # Save both files with different names...
    with open('newfile1.gds', 'wb') as stream:
        lib.save(stream)

    with open('newfile2.gds', 'wb') as stream:
        new_lib.save(stream)