Metadata-Version: 2.1
Name: fibomat
Version: 0.1.2
Summary: fib-o-mat is a toolbox to generate patterns for focus ion beam instruments.
Home-page: https://gitlab.com/viggge/fib-o-mat
Author: Victor Deinhart
Author-email: victor.deinhart@helmholtz-berlin.de
License: GPLv3
Project-URL: Bug Reports, https://gitlab.com/viggge/fib-o-mat/-/issues
Project-URL: Source, https://gitlab.com/viggge/fib-o-mat/
Project-URL: Documentation, https://fib-o-mat.readthedocs.io/en/latest/
Keywords: focused ion beam,fib,pattern,patterning,beam path generation,
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
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
Requires-Python: >=3.8, <4
Description-Content-Type: text/markdown
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: sympy
Requires-Dist: bokeh (<=2.1.1)
Requires-Dist: pint
Requires-Dist: ezdxf
Requires-Dist: pandas
Requires-Dist: numba
Provides-Extra: docs
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: recommonmark ; extra == 'docs'
Requires-Dist: pydata-sphinx-theme ; extra == 'docs'
Requires-Dist: sphinxemoji ; extra == 'docs'
Requires-Dist: bokeh (<=2.1.1) ; extra == 'docs'

<!--- 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., ...
```    

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

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()
```



