Mercurial > hg > cc > cirrus_shared
changeset 1:fef95c7a391f
for general use...
| author | Henry S. Thompson <ht@inf.ed.ac.uk> |
|---|---|
| date | Sat, 28 Feb 2026 15:51:58 +0000 |
| parents | a6c7f23cca94 |
| children | 345f8b12fd2f |
| files | .bash_extras .bash_profile |
| diffstat | 2 files changed, 176 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.bash_extras Sat Feb 28 15:51:58 2026 +0000 @@ -0,0 +1,168 @@ +# Sourced by .bashrc and singularity runscript + +cu () +{ + cvs update "$@" | egrep -v '^\?' +} + +lss () +{ + ls -F --color=auto -lS "$@" | { + read one; + if [ -n "$one" -a "${one::5}" \!= "total" ]; then + echo "$one"; + fi; + cat + } +} + +ff () +{ + pat=$1; + shift; + find . -iname "*$pat*" $@ +} + +typecat () +{ + tt=$(type $1); + case $tt in + *\ is\ hashed\ *) + cat $(echo $tt | cut -f 4 -d ' ' | tr -d '()') + ;; + *\ is\ /*) + cat $(echo $tt | cut -f 3 -d ' ' | tr -d '()') + ;; + *) + type $1 + ;; + esac +} + +sus () +{ + sort "$@" | uniq -c | sort -k1nr,1 +} + +uz () +{ + igzip -dc "$@" +} + +function tot () +{ + awk '{sum+=$1} END {printf "%u\n",sum}' +} + +btot () +{ + python3 -c 'import sys +multiCol = dostats = sample = False +c = "" +p = 0 +q = None +d = 2 +ssq = 0 +while len(sys.argv)>1: + if multiCol and sys.argv[1][0]!="-": + p=1 + q=int(sys.argv.pop(1)) + elif sys.argv[1]=="-c": + # add commas + c = "," + sys.argv.pop(1) + elif sys.argv[1]=="-a": + # do sum etc. for all columns [p]:q + multiCol = True + sys.argv.pop(1) + try: + q = int(sys.argv.pop(1)) + except IndexError: + print("you must supply an N for multi-column") + exit(1) + elif sys.argv[1]=="-s": + # include mean and sample stdev + dostats = True + sample = True + sys.argv.pop(1) + elif sys.argv[1]=="-p": + # include mean and population stdev + dostats = True + sys.argv.pop(1) + elif sys.argv[1]=="-d": + sys.argv.pop(1) + d=int(sys.argv.pop(1)) + else: + break +n=0 +if multiCol: + w=q-p + import numpy as np + s=np.array([0]*w) + n=np.array([0]*w) + if dostats: + ssq=np.array([0]*w) +else: + s=0 + if dostats: + ssq=0 + import math +for l in sys.stdin: # ["1 11\n","2 22\n"]: + try: + if multiCol: + ll=l.split()[p:q] + ii=np.array([(0 if i.startswith("NaN") else int(i)) for i in ll]) + s+=ii + ssq+=ii*ii + n+=np.array([(0 if i.startswith("NaN") else 1) for i in ll]) + else: + if l[0]!="N": + i=int(l) + s+=i + if dostats: + ssq+=(i*i) + n+=1 + except (NameError,ValueError) as e: + print(l,e,file=sys.stderr) +if dostats: + if multiCol: + m=s/n + var=(ssq/n)-pow(m,2) + if sample: + var=(n/(n-1))*var + sd=pow(var,0.5) + else: + m=float(s)/float(n) + var=(float(ssq)/float(n))-pow(float(m),2) + if sample: + var=(float(n)/float(n-1))*var + sd=math.sqrt(var) +if dostats: + if multiCol: + print("\t".join(f"{i:{c}.{d}f}" for i in s)) + print("\t".join(f"{i:{c}.{d}f}" for i in m)) + print("\t".join(f"{i:{c}.{d}f}" for i in sd)) + else: + print(f"{s:}\t{m:}\t{sd:}") +else: + if multiCol: + print("\t".join(f"{i:}" for i in s)) + else: + print(f"{s:}") + +' "$@" +} + +headtail () +{ +case "$1" in -*) + n="$1" + shift + ;; + *) n="-10" + ;; +esac +cat "$@" | { sed -u ${n:1}q ; echo === ; tail $n ; } +} + +export -f cu lss ff typecat sus uz tot btot headtail
