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]) |
