Mercurial > repos > imgteam > orientationpy
annotate orientationpy-cli.py @ 0:214f548481eb draft
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
| author | imgteam | 
|---|---|
| date | Tue, 12 Mar 2024 10:54:40 +0000 | 
| parents | |
| children | cc8fe984ec3e | 
| rev | line source | 
|---|---|
| 0 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 1 import argparse | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 2 import csv | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 3 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 4 import numpy as np | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 5 import orientationpy | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 6 import skimage.io | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 7 import skimage.util | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 8 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 9 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 10 if __name__ == '__main__': | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 11 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 12 parser = argparse.ArgumentParser() | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 13 parser.add_argument('input', type=str) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 14 parser.add_argument('--mode', type=str, required=True) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 15 parser.add_argument('--sigma', type=float, required=True) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 16 parser.add_argument('--min_coherency', type=float, required=True) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 17 parser.add_argument('--min_energy', type=float, required=True) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 18 parser.add_argument('--max_precision', type=int, required=True) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 19 parser.add_argument('--output_angle_tsv', type=str, default=None) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 20 args = parser.parse_args() | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 21 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 22 im = skimage.io.imread(args.input) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 23 im = skimage.util.img_as_float(im) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 24 im = np.squeeze(im) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 25 assert im.ndim == 2 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 26 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 27 Gy, Gx = orientationpy.computeGradient(im, mode=args.mode) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 28 structureTensor = orientationpy.computeStructureTensor([Gy, Gx], sigma=args.sigma) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 29 orientations = orientationpy.computeOrientation(structureTensor, computeEnergy=True, computeCoherency=True) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 30 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 31 # Compute angle according to https://bigwww.epfl.ch/demo/orientationj/#dist: | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 32 mask = np.logical_and( | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 33 orientations['coherency'] >= args.min_coherency, | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 34 orientations['energy'] >= args.min_energy * orientations['energy'].max(), | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 35 ) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 36 angles = orientations['theta'][mask] | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 37 weights = orientations['coherency'][mask] | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 38 bin_size = 1 if args.max_precision == 0 else pow(10, -args.max_precision) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 39 hist, bin_edges = np.histogram( | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 40 angles, | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 41 range=(-90, +90), | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 42 weights=weights, | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 43 bins=round(180 / bin_size), | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 44 ) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 45 hidx = np.argmax(hist) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 46 angle = (bin_edges[hidx] + bin_edges[hidx + 1]) / 2 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 47 angle = round(angle, args.max_precision) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 48 | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 49 # Write results | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 50 if args.output_angle_tsv: | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 51 with open(args.output_angle_tsv, 'w') as fp: | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 52 writer = csv.writer(fp, delimiter='\t', lineterminator='\n') | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 53 writer.writerow(['Angle']) | 
| 
214f548481eb
planemo upload for repository https://github.com/BMCV/galaxy-image-analysis/tree/master/tools/orientationpy commit fa4501fb81c17f0b56889f250cf92396804295d1
 imgteam parents: diff
changeset | 54 writer.writerow([angle]) | 
