Skip to content

Instantly share code, notes, and snippets.

@nmz787
nmz787 / each_cell_on_its_own_line
Last active August 20, 2023 09:38
git-xlsx-textconv-python
import xlrd
import sys
if __name__ == '__main__':
if len(sys.argv) != 2:
print "Usage: git-xlsx-textconv file.xslx"
excelFileName = sys.argv[1]
xlFile = xlrd.open_workbook(excelFileName)
@nmz787
nmz787 / machine.py
Last active May 11, 2023 14:07
micropython mock library - for checking syntax of your MicroPython from Linux
class _board(object):
def __getattr__(self, *args, **kwargs):
return 1
from pyb import Pin as Pin
from pyb import I2C as I2C
from stm import mem32, mem16, mem8
@nmz787
nmz787 / open_source_cad_layerprops_converter.py
Last active January 27, 2023 07:47
converts a CSV to klayout, GDS3D, or Calibre layer-property files.
'''
usage:
open_source_layerprops_converter.py /path/to/num_to_names.csv /path/to/output/layerprops.ext -out_format klayout/gds3d/calibre
example CSV (not including this line):
1,0,metal0,drawing
1,2,metal0,via
2,0,metal1,drawing
'''
@nmz787
nmz787 / antlr_lexer_test.py
Created October 22, 2020 22:40
ANTLR Python Lexer unit-testing
from antlr4 import CommonTokenStream, InputStream, Token
# from mytool.parsers.error_listener import MyErrorListener
def getTokensFromText(input_string, MyLexer):
input_stream = InputStream(input_string)
lexer = MyLexer(input_stream)
# lexer.addErrorListener(MyErrorListener)
stream = CommonTokenStream(lexer)
stream.fill()
# most of the following code is from here: https://github.com/WoLpH/numpy-stl#combining-multiple-stl-files
# but instead of combining STLs, I'm just copying and replicating the same one
import math
import stl
from stl import mesh
import numpy
# find the max dimensions, so we can know the bounding box, getting the height, width, length (because these are the step size)...
def find_mins_maxs(obj):
@nmz787
nmz787 / Gds2png.py
Created June 4, 2020 10:20
Gds to png
import os.path
from gdsCAD import *
from PIL import Image, ImageDraw
#l = core.GdsImport(os.path.abspath("wafer.GDS"), verbose=True)
#l2, l4 = utils.split_layers(a, [2,4])
l4_gds = core.GdsImport(os.path.abspath("die5_from_topleft_layer4_slits_shown.GDS"), verbose=True)
l2_gds = core.GdsImport(os.path.abspath("die5_from_topleft_layer2_shown.GDS"), verbose=True)
@nmz787
nmz787 / Lexer.g4
Last active May 19, 2020 23:23
ANTLR not working for some reason that I can't figure out
lexer grammar Lexer;
fragment WS: [\t ]+;
fragment NL: WS? ('\r'* '\n')+;
COLON_ATTRIBUTES: ('KeyId' |
'first key' |
'key' |
'key (interesting)' |
'key(# of 1second)' |
'key.subkey')+ -> mode(COLON_ATTRIBUTES_MODE);
@nmz787
nmz787 / Lexer.g4
Created May 19, 2020 23:06
Run with:
lexer grammar Lexer;
fragment WS: [\t ]+;
fragment NL: WS? ('\r'* '\n')+;
COLON_ATTRIBUTES: ('KeyId' |
'first key' |
'key' |
'key (interesting)' |
'key(# of 1second)' |
'key.subkey')+ -> mode(COLON_ATTRIBUTES_MODE);
@nmz787
nmz787 / pbm_viewer.py
Last active January 3, 2020 08:28
PBM image viewer for gigapixel files - CTRL O to open a file, press enter in the text boxes to update screen
__license__ = """
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
As a special exception, the copyright holders of this library
hereby recind Section 3 of the GNU Lesser General Public License. This
means that you MAY NOT apply the terms of the ordinary GNU General
Public License instead of this License to any given copy of the
@nmz787
nmz787 / mks_901p.py
Created December 29, 2019 10:21
work in progress MKS 901P vacuum transducer sensor library and command-line program.
"""
usage: mks_901p.py [-h] [--find_baud] [--baud BAUD] [-unit] serial_port
positional arguments:
serial_port the Windows COM port or path to a linux serial port
optional arguments:
-h, --help show this help message and exit
--find_baud tries to access the sensor over all supported baud rates,
prints which is successful