Source code for pyveg.scripts.calc_euler_characteristic

#!/usr/bin/env python

"""
script to run the Euler Characteristic calculation on a given input
image.
The code that does the actual calculations is in
src/subgraph_centrality.py
"""

import os
import argparse

from pyveg.src.subgraph_centrality import (
    subgraph_centrality,
    feature_vector_metrics,
    generate_sc_images,
    text_file_to_array,
    image_file_to_array,
)


[docs]def main(): parser = argparse.ArgumentParser( description="Look at subgraph centrality of signal pixels in an image" ) parser.add_argument("--input_txt", help="input image as a csv file") parser.add_argument("--input_img", help="input image as an image file") parser.add_argument( "--use_diagonal_neighbours", help="use 8-neighbours rather than 4-neighbours", action="store_true", ) parser.add_argument( "--num_quantiles", help="number of elements of feature vector", type=int, default=20, ) parser.add_argument( "--sig_threshold", help="threshold for signal pixel", type=int, default=255 ) parser.add_argument( "--upper_threshold", help="threshold for signal pixel is an upper limit", action="store_true", ) parser.add_argument( "--output_csv", help="filename for output csv of feature vector", default="feature_vector.csv", ) parser.add_argument("--output_img", help="filename for output images") args = parser.parse_args() image_array = None if args.input_txt: image_array = text_file_to_array(args.input_txt) elif args.input_img: image_array = image_file_to_array(args.input_img) else: raise RuntimeError("Need to specify input_txt or input_img") use_diagonal_neighbours = True if args.use_diagonal_neighbours else False num_quantiles = args.num_quantiles threshold = args.sig_threshold is_lower_limit = True if not args.upper_threshold else False output_csv = args.output_csv # call the subgraph_centrality function to calculate everything feature_vec, sel_pixels = subgraph_centrality( image_array, use_diagonal_neighbours, num_quantiles, threshold, is_lower_limit, output_csv, ) # get the images showing the selected sub-regions sc_images = generate_sc_images(sel_pixels, image_array) feature_vec_metrics = feature_vector_metrics(feature_vec, output_csv) print(feature_vec_metrics) if args.output_img: save_sc_images(sc_images, args.output_img)
if __name__ == "__main__": main()