Metadata-Version: 2.4
Name: femtum-sdk
Version: 0.60.5
Summary: Femtum SDK
Author: Samuel
Author-email: smagny@femtum.com
Requires-Python: >=3.11,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: diskcache (>=5.6.3,<6.0.0)
Requires-Dist: fastapi (>=0.115.11,<0.116.0)
Requires-Dist: grpcio (>=1.70.0,<2.0.0)
Requires-Dist: httpx (>=0.28.1,<0.29.0)
Requires-Dist: injector (>=0.22.0,<0.23.0)
Requires-Dist: numpy (>=2.2.3,<3.0.0)
Requires-Dist: pandas (>=2.2.3,<3.0.0)
Requires-Dist: protobuf (>=5.29.4,<6.0.0)
Requires-Dist: pydantic (>=2.11.0,<3.0.0)
Requires-Dist: pyvisa (>=1.15.0,<2.0.0)
Requires-Dist: scipy (>=1.15.3,<2.0.0)
Requires-Dist: uvicorn[standard] (>=0.34.0,<0.35.0)
Description-Content-Type: text/markdown

# Femtum SDK - Python

[![NuGet](https://img.shields.io/nuget/v/Femtum.SDK.svg)](https://www.nuget.org/packages/Femtum.SDK)

### Installation

To install the Femtum SDK, use the following command:

##### pip

```bash
pip install femtum-sdk
```

##### poetry

```bash
poetry add femtum-sdk
```

### Usage

Here is a basic example of how to use the Femtum SDK:

1. Start the SDK Server
2. Use SDK in your code

```python
# Find results by page and get sweep data

from femtum_sdk.adapter.analysis_pandas_adapter import SweepResulToDataframe
from femtum_sdk.core.result_pb2 import (
    FindResultByIdRequest,
    ListByPageResultsRequest,
    OptionalSweepResult,
    ResultsFilterRequest,
    ResultsPage,
)

from femtum_sdk import FemtumSdk
from femtum_sdk.core.tag_pb2 import Tag

# Make sure the API server is running before running next steps
with FemtumSdk() as sdk:
    page: ResultsPage = sdk.trimming.result.ListByPage(
        ListByPageResultsRequest(
            PageSize=10,
            PageNumber=1,
            Filters=ResultsFilterRequest(
                WaferName="MyWafer",
                ReticleName="MyReticle",
                DieName="MyDie",
                CircuitName="MyCircuit",
                Tags=[Tag(Key="ShotNumber", Value="6")],
            ),
        )
    )

    items = list(page.Items)
    print(items)

    firstResultWithData: OptionalSweepResult = sdk.trimming.result.FindSweepById(
        FindResultByIdRequest(Id=page.Items[0].Id)
    )
    result = firstResultWithData.Result

    print(result.WavelengthsArray)
    print(result.WavelengthsArray)
    print(result.PowersArray)

    dataframe = SweepResulToDataframe(result)
    print(dataframe)

```

#### With Specified SDK server url

```python
with FemtumSdk(hostUrl=api_server.get_grpc_url()) as sdk:
  request = FindResultDataRequestDto()
  result: SpectrumProviderSweepResultArray = (
      sdk.analysis.FindSpectrumProviderSweepResults(request)
  )

  print(result.Items)
```

## Module Dependencies
```mermaid
flowchart TD
    analytics[Analytics]
    spectrum[Spectrum]
    laser[Laser]
    database[Database]
    analysis_agent[Analysis Agent]

    analysis_agent --> database
    analysis_agent --> analytics
    analysis_agent --> spectrum
    analysis_agent --> laser
```
