Skip to content

Instantly share code, notes, and snippets.

View lgalke's full-sized avatar

Lukas Galke lgalke

View GitHub Profile
lgalke / gtop
Last active October 7, 2022 00:08
gtop: who uses how much RAM on which GPUs
#!/usr/bin/env bash
GPUID_PID_RAM=`nvidia-smi | sed '0,/Processes:/d' | grep -oe "\<[0-9]\+\(MiB\)\?\>" | xargs`
while [ -n "$3" ]; do
_u=`ps -q "$2" -eo "uname" | tail -n +2`
printf '%s is using %s on GPU %s\n' "$_u" "$3" "$1"
shift 3
lgalke / tex.vim
Created September 8, 2021 15:40
Command to properly delete all comments from a latex file
function! s:DeleteAllComments() range
" Deletes all tex comments (trailing and full line)
" without changing paragraph formatting.
" Put this function in $HOME/.vim/ftplugin/tex.vim
let l:save = winsaveview() " Save cursor position
" First: Remove full comment lines completely (to retain formatting)
" Second: Remove trailing comments (but dont match escaped \%)
" Third: Join multiple blank lines to one (aesthetics)
lgalke /
Last active March 12, 2020 15:09
Simple Anagram Generator in Python
import argparse, itertools
parser = argparse.ArgumentParser()
parser.add_argument('input', help="Initial text for generating anagrams")
parser.add_argument('-d', '--dict', default='/usr/share/dict/cracklib-small',
help="A word list such as '/usr/share/dict/words' or '/usr/dict/words'")
args = parser.parse_args()
with open(args.dict, 'r') as fh:
valid_words = set(line.strip().lower() for line in fh)
anagrams = set(''.join(a) for a in itertools.permutations(list(args.input.lower())) if all(w in valid_words for w in ''.join(a).split()))
for anagram in sorted(anagrams):
lgalke / locdb-journals.ipynb
Created January 14, 2018 16:00 — forked from zuphilip/locdb-journals.ipynb
LOC-DB Journals Analysis
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
lgalke /
Created February 28, 2017 14:48 — forked from psorianom/
Text feature extractor with okapi bm25 and delta idf
# -*- coding: utf-8 -*-
# Authors: Olivier Grisel <>
# Mathieu Blondel <>
# Lars Buitinck <>
# Robert Layton <>
# Jochen Wersdörfer <>
# Roman Sinayev <>
# License: BSD 3 clause
lgalke / necromancy.vim
Last active February 25, 2017 15:08
Snippets in a single VimL line instead of plugin
" Snippets (or reanimating skeletons) in plain vim which just uses ONE LINE OF CODE:
" The following is one single abbreviation for all:
" The graveyard.
" - Visual selection -> :w\g/<filename> will create a grave
" - Reanimating a skeleton by -> :r\g/<filename>
" Of course you can get a list of your skeletons by hitting <tab> instead of writing a filename (wildmenu).
" Or hit *.py<Tab> to get a list of only python snippets.
" - Editing a skeleton... -> :e\g/<filename>
cabbrev \g $HOME/.vim/graveyard
lgalke /
Last active February 22, 2022 23:46
Word Embedding Postprocessing: All but the top
All-but-the-Top: Simple and Effective Postprocessing for Word Representations
Last Updated: Fri 15 Nov 2019 11:47:00 AM CET
**Prior version had serious issues, please excuse any inconveniences.**
import numpy as np
from sklearn.decomposition import PCA
inoremap <silent> <Bar> <Bar><Esc>:call <SID>align()<CR>a
function! s:align()
let p = '^\s*|\s.*\s|\s*$'
if exists(':Tabularize') && getline('.') =~# '^\s*|' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
let column = strlen(substitute(getline('.')[0:col('.')],'[^|]','','g'))
let position = strlen(matchstr(getline('.')[0:col('.')],'.*|\s*\zs.*'))
normal! 0
call search(repeat('[^|]*|',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))