Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/gdsfactory/klayout_pyxs

Python port of xsection script for KLayout
https://github.com/gdsfactory/klayout_pyxs

Last synced: 2 months ago
JSON representation

Python port of xsection script for KLayout

Lists

README

        

# klayout_pyxs 0.1.13

[![docs](https://github.com/gdsfactory/klayout_pyxs/actions/workflows/pages.yml/badge.svg)](https://gdsfactory.github.io/klayout_pyxs/)
[![pypi](https://img.shields.io/pypi/v/klayout_pyxs)](https://pypi.org/project/klayout_pyxs/)
[![MIT](https://img.shields.io/github/license/gdsfactory/gdsfactory)](https://choosealicense.com/licenses/mit/)
[![black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![Downloads](https://pepy.tech/badge/klayout_pyxs)](https://pepy.tech/project/klayout_pyxs)
[![Downloads](https://pepy.tech/badge/klayout_pyxs/month)](https://pepy.tech/project/klayout_pyxs)
[![Downloads](https://pepy.tech/badge/klayout_pyxs/week)](https://pepy.tech/project/klayout_pyxs)

This is a python port of the XSection project
(https://github.com/klayoutmatthias/xsection).

The goal of this project is to provide an add-on to KLayout (www.klayout.de) to
create and visualize a realistic cross-section view for VLSI designs
supporting a wide range of technology options.

## User Documentation

For the project description see [klayout_pyxs Project Home Page](https://gdsfactory.github.io/klayout_pyxs).

## Project Files

The basic structure is:

* `docs` The documentation
* `klayout_pyxs` The python package sources
* `pymacros` The python .lym macros files for KLayout
* `samples` Some sample files
* `tests` Test sources and golden data
* `xs2pyxs` xs to pyxs conversion scripts

The `docs` folder contains the .rst files and images for the documentation
pages. See rendered version [here](https://klayout-pyxs.readthedocs.io/en/latest).

The `klayout_pyxs` folder contains the python package which includes
the cross-section generation engine.

The `pymacros` folder contains with the actual KLayout macros code,
`pyxs.lym`.

The `samples` folder holds a few files for playing around.

The `tests` folder contains some regression tests for the package.
To run the tests, make sure "klayout" or "klayout_app" (in Windows)
is in your path and use

```sh
$ cd tests
$ ./run_tests.sh
```

or (from e.g. git bash console on Windows)

```bash
$ cd tests
$ bash run_tests_windows.sh
```

The `xs2pyxs` folder contains a shell script which helps converting
Ruby-based .xs scripts to .pyxs scripts. It performs necessary but not
sufficient string replacements. Depending on the .xs script complexity,
more changes are likely to be needed.

## Installation for users

You can install the module

```
pip install klayout_pyxs
```

And the klayout macro from klayout package manager.

![](https://i.imgur.com/0e1vAqW.png)

## Installation for developers

To run .pyxs scripts from the KLayout menu, klayout_pyxs package and
python macros file have to be installed to the KLayout folders.
According to [KLayout documentation](https://www.klayout.de/doc-qt4/about/macro_editor.html),
they should go to the "pymacros" and "python" folders in KLayout's user
specific application folder. In Windows, it is $USERPROFILE/KLayout.

If you are using Python 2.7 in your KLayout distribution, you need
`six` package installed.

### Windows

In Windows, do the following (the commands should be run from e.g.
git bash console). Tested on KLayout 0.25.3 and 0.25.7.

0. Check if $USERPROFILE/KLayout exists and is used by the KLayout to
store macros. Run

```bash
$ ls $USERPROFILE/KLayout
```

If no error reported, continue with 1. If there is an error, you need to
find a location of KLayout's user specific application folder
with pymacros, python folders and use it in further commands.

1. Clone klayout_pyxs repository into any source folder:

```bash
$ git clone https://github.com/dimapu/klayout_pyxs.git klayout_pyxs_repo
```

2. Copy klayout_pyxs_repo/pymacros/pyxs.lym to $USERPROFILE/KLayout/pymacros/pyxs.lym

```bash
$ cp klayout_pyxs_repo/pymacros/pyxs.lym $USERPROFILE/KLayout/pymacros/pyxs.lym
```

3. Copy klayout_pyxs_repo/klayout_pyxs/*.* to $USERPROFILE/KLayout/python/klayout_pyxs

```bash
$ mkdir $USERPROFILE/KLayout/python/klayout_pyxs
$ cp klayout_pyxs_repo/klayout_pyxs/*.py $USERPROFILE/KLayout/python/klayout_pyxs
```

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.

### Linux / Mac OS

Run

```bash
$ make install
```

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.