File: histogram.py

package info (click to toggle)
python-sqt 0.8.0-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 824 kB
  • sloc: python: 5,964; sh: 38; makefile: 10
file content (54 lines) | stat: -rw-r--r-- 1,399 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python3
"""
"""
import sys
from random import randint, random, seed
import matplotlib as mpl
mpl.use('pdf')  # enable matplotpib over an ssh connection without X
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

from sqt import HelpfulArgumentParser
from sqt.io.fasta import IndexedFasta

__author__ = "Marcel Martin"


def get_argument_parser():
	parser = HelpfulArgumentParser(description=__doc__)
	add = parser.add_argument
	add("--left", type=float, default=None)
	add("--right", type=float, default=None)
	add("--title", help="Plot title (default: Histogram of <INFILENAME>)")
	add("--bins", type=int, default=40, help="number of bins (default: %(default)s")
	add("infile", help="use '-' for standard input")
	add("image", nargs='?', help="name of PDF or SVG file")
	return parser


def main():
	parser = get_argument_parser()
	args = parser.parse_args()
	if args.infile == '-':
		path = sys.stdin.buffer
		title = 'Histogram'
	else:
		path = args.infile
		title = 'Histogram of ' + args.infile
	if args.title:
		title = args.title
	data = pd.read_csv(path, dtype=float).values  # delimiter=None is default

	fig, ax = plt.subplots()
	ax.set_title(title)
	plt.hist(data, bins=args.bins, rwidth=0.8)
	ax.set_xlim(left=args.left, right=args.right)
	if args.image is not None:
		plt.savefig(args.image)
	else:
		plt.show()


if __name__ == '__main__':
	main()