File: filterCoverage.py

package info (click to toggle)
insighttoolkit 3.20.1%2Bgit20120521-5
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 80,672 kB
  • ctags: 85,253
  • sloc: cpp: 458,133; ansic: 196,222; fortran: 28,000; python: 3,839; tcl: 1,811; sh: 1,184; java: 583; makefile: 428; csh: 220; perl: 193; xml: 20
file content (137 lines) | stat: -rwxr-xr-x 4,132 bytes parent folder | download | duplicates (3)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/env python

import sys, re, itk, os
from sys import argv

# python 2.3 compatibility
if sys.version < '2.4' :
        # set compatibility
        import sets
        set = sets.Set

        def sorted(iterable, cmp=None, key=None, reverse=False) :
	    i = list(iterable)
	    if key :
		d = {}
		for v in iterable :
		    k = key(v)
		    if not d.has_key(k) :
			d[k] = []
		    d[k].append(v)
		keys = d.keys()
		keys.sort(cmp)
		i = []
		for k in keys :
		    i += d[k]
	    else :
		i.sort(cmp)
	    if reverse :
		i.reverse()
	    return i

# declares filter which will not be wrapped
excluded = set([
  "UnaryFunctorImageFilter",
  "ReconstructionImageFilter",
  "PadImageFilter",
  "ObjectMorphologyImageFilter",
  "MovingHistogramDilateImageFilter",
  "MovingHistogramErodeImageFilter",
  "MovingHistogramImageFilter",
  "MovingHistogramMorphologicalGradientImageFilter",
  "MovingHistogramMorphologyImageFilter",
  "MorphologyImageFilter",
  "FFTWRealToComplexConjugateImageFilter",
  "FFTWComplexConjugateToRealImageFilter",
  "FFTRealToComplexConjugateImageFilter",
  "FFTComplexConjugateToRealImageFilter",
  "SCSLComplexConjugateToRealImageFilter",
  "SCSLRealToComplexConjugateImageFilter",
  "BinaryMorphologyImageFilter",
  "BinaryFunctorImageFilter",
  "TernaryFunctorImageFilter",
  "ShiftScaleInPlaceImageFilter",
  "FastIncrementalBinaryDilateImageFilter",
  "BasicMorphologicalGradientImageFilter",
  "TwoOutputExampleImageFilter",
  "NaryFunctorImageFilter",
  "NonThreadedShrinkImageFilter",
  "RegionGrowImageFilter",
  "ConnectedComponentFunctorImageFilter",
  "BasicDilateImageFilter",
  "BasicErodeImageFilter",
  "BasicErodeImageFilter",
  "AdaptImageFilter",
  "DeformationFieldJacobianDeterminantFilter",
  "WarpJacobianDeterminantFilter",
  "GetAverageSliceImageFilter",
  "ValuedRegionalExtremaImageFilter",
  "ProjectionImageFilter",
  "AnchorCloseImageFilter",
  "AnchorDilateImageFilter",
  "AnchorErodeDilateImageFilter",
  "AnchorErodeImageFilter",
  "AnchorOpenCloseImageFilter",
  "AnchorOpenImageFilter",
  "MiniPipelineSeparableImageFilter",
  "OptAdaptiveHistogramEqualizationImageFilter",
  "OptBinaryMorphologyImageFilter",
  "OptBlackTopHatImageFilter",
  "OptGrayscaleDilateImageFilter",
  "OptGrayscaleErodeImageFilter",
  "OptGrayscaleMorphologicalClosingImageFilter",
  "OptGrayscaleMorphologicalOpeningImageFilter",
  "OptMeanImageFilter",
  "OptMedianImageFilter",
  "OptMorphologicalGradientImageFilter",
  "OptMorphologyImageFilter",
  "OptNoiseImageFilter",
  "OptResampleImageFilter",
  "OptSimpleContourExtractorImageFilter",
  "OptWhiteTopHatImageFilter",
  "VanHerkGilWermanDilateImageFilter",
  "VanHerkGilWermanErodeDilateImageFilter",
  "VanHerkGilWermanErodeImageFilter",
  "GradientImageToBloxBoundaryPointImageFilter",
  "JoinImageFilter",
  "MaskedMovingHistogramImageFilter",
  "SimpleFuzzyConnectednessRGBImageFilter",
  "SimpleFuzzyConnectednessScalarImageFilter",
  "MeshToMeshFilter",
  "VectorFuzzyConnectednessImageFilter",
  "WarpJacobianDeterminantFilter",
  "MatrixIndexSelectionImageFilter",
])


# get filters from sources
headers = []
for d in argv[1:]:
  headers += sum([ f for p,d,f in os.walk(d) ], [])
filters = set([f[len('itk'):-len('.h')] for f in headers if f.endswith("Filter.h")]) - excluded

# get filter from wrapper files
# remove filters which are not in the toolkit (external projects, PyImageFilter, ...)
wrapped = set([a for a in dir(itk) if a.endswith("Filter")]).intersection(filters)

nonWrapped = filters - wrapped


# print non wrapped filters without much text to stdout, so they can be easily reused
for f in sorted(nonWrapped) :
	print f

# and print stats in stderr to avoid poluting the list above
print >>sys.stderr
print >>sys.stderr, '%i filters' % len(filters)
print >>sys.stderr, '%i wrapped filters' % len(wrapped)
print >>sys.stderr, '%i non wrapped filters' % len(nonWrapped)
print >>sys.stderr, '%f%% covered' % (len(wrapped) / float(len(filters)) * 100)
print >>sys.stderr


# the goal is to return a non zero value if coverage is not 100%
# but we are not yet at this stage !
#
# return len(nonWrapped)