Metadata-Version: 2.1
Name: fibomat
Version: 0.6.0
Summary: fib-o-mat is a toolbox to generate patterns for focused ion beam instruments.
Keywords: focused ion beam,fib,pattern,patterning,beam path generation
Author-Email: Victor Deinhart <victor.deinhart@helmholtz-berlin.de>
License: GPLv3
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: C++
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: POSIX
Classifier: Operating System :: Microsoft :: Windows
Project-URL: Repository, https://github.com/fib-o-mat/fib-o-mat
Project-URL: Documentation, https://fib-o-mat.readthedocs.io/en/latest/
Requires-Python: >=3.9
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: sympy
Requires-Dist: pint
Requires-Dist: splipy
Requires-Dist: frozenlist
Requires-Dist: pyhershey
Requires-Dist: jinja2
Provides-Extra: exporting
Requires-Dist: bokeh>=3.1.1; extra == "exporting"
Requires-Dist: svgwrite; extra == "exporting"
Requires-Dist: marshmallow; extra == "exporting"
Requires-Dist: prettytable; extra == "exporting"
Requires-Dist: xmltodict; extra == "exporting"
Requires-Dist: colored; extra == "exporting"
Requires-Dist: pillow; extra == "exporting"
Provides-Extra: io
Requires-Dist: svgelements; extra == "io"
Requires-Dist: ezdxf; extra == "io"
Provides-Extra: gui
Requires-Dist: pyqt5; extra == "gui"
Requires-Dist: vispy; extra == "gui"
Provides-Extra: docs
Requires-Dist: setuptools; extra == "docs"
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: recommonmark; extra == "docs"
Requires-Dist: pydata_sphinx_theme; extra == "docs"
Requires-Dist: sphinxemoji; extra == "docs"
Provides-Extra: testing
Requires-Dist: pytest; extra == "testing"
Requires-Dist: pytest-coverage; extra == "testing"
Requires-Dist: pytest-mock; extra == "testing"
Provides-Extra: dev
Requires-Dist: bump2version; extra == "dev"
Requires-Dist: twine; extra == "dev"
Description-Content-Type: text/markdown

<!--- some hacky stuff get everything working on gitlab and pypi --->
<div align="center">

<img src="https://fib-o-mat.readthedocs.io/en/latest/_static/fibomat.png" width="50%" style="width: 50%; display: block; margin-left: auto; margin-right: auto;"  alt="fibomat logo" />
</div>

fib-o-mat is a Python library to create beam patterns for focused ion beam instruments.

Pattern geometries can be modeled directly in Python bsaed on (pre-)defined geometric primitives or importet from vector
graphics. These can be equipped with beam and rasterizing settings and exported to microscope compatible files.

fib-o-mat is by designed flexible and easily expandable. Hence, adding support for for different microscopes, custom
geometric primitives or optimization routines is a straightforward process.

For the usage of fib-o-mat, basic python knowledge and a good understanding of the target microscope are mandatory.
See the [getting started guide](https://fib-o-mat.readthedocs.io/en/latest/getting_started.html) for an introduction to
this library and the [user guide](https://fib-o-mat.readthedocs.io/en/latest/user_guide/user_guide.html) for a complete
documentation. The module reference is to be found [here](https://fib-o-mat.readthedocs.io/en/latest/reference.html).

<img src="https://fib-o-mat.readthedocs.io/en/latest/_images/flowchart.png" style="width: 100%;  height: auto;" alt="workflow" />

Made with :black_heart: and :coffee: at HZB and FBH in Berlin.

If you use this library in your work, please cite

Deinhart et al., Beilstein J. Nanotechnol. **2021**, 12, 304-318. [doi:10.3762/bjnano.12.25](https://www.beilstein-journals.org/bjnano/articles/12/25)


Installation
============
Run in a terminal
```
$ pip install fibomat
```  
It is highly recommended to use virtual environments.

There are several optional dependencies to install:

- `exporting`: plotting and exporting patterns
- `io`: loading SVG and DXF
- `gui`: beam simulation gui

E.g., install fib-o-mat alongside the `exporting` dependencies via
```
$ pip install fibomat[exporting]
```  

Example
=======
```python
from fibomat import Sample, Mill, Q_, U_
from fibomat.shapes import Line
from fibomat import raster_styles
from fibomat.default_backends import SpotListBackend

# create a Sample class object with optional description
sample = Sample('Useful description here')

# add a site to the sample with cente = (0, 0) and field of view of (10, 10)
site = sample.create_site(dim_position=([0, 0], U_('µm')), dim_fov=([10, 10], U_('µm')))  # '%*µm*)'

# create a Pattern with a Line shape and add it to the site
site.create_pattern(
    dim_shape=(Line((-5, 0), (5, 0)), U_('µm')),
    shape_mill=Mill(dwell_time=Q_('5 ms'), repeats=1),
    raster_style=raster_styles.one_d.Linear(pitch=Q_('1 nm'))
)

# export a rasterized version of the pattern as text file in a pre-defined (but editable) format. See docs for details.
sample.export(SpotListBackend).save('pattern.txt')

# plot the pattern
sample.plot()
```

License
=======

The source code is licensed under the GNU General Public License v3.0. This includes everything besides the 'docs' folder and its content in the git repository. See LICENSE.txt for a copy of the license.

The documentation is licensed under the Creative Commons Attribution 4.0 International. This includes everything in the 'docs' folder in the git repository and the documentation hosted at https://fib-o-mat.readthedocs.io/. A copy of the license is to be found at 'docs/LICENSE_DOCS.txt' in the git repository.

