summaryrefslogtreecommitdiff
path: root/grc/core/utils/complexity.py
diff options
context:
space:
mode:
authorMarcus Müller <marcus@hostalia.de>2018-06-25 19:28:29 +0200
committerMarcus Müller <marcus@hostalia.de>2018-06-25 19:28:29 +0200
commit03ae7938351f01313d30a41927ffb77670fcca14 (patch)
tree586744f0e2b7560dc161f2a7a60030155d43ce8a /grc/core/utils/complexity.py
parentd78f7fcd0dadd362fcdc99194da5343a506eb519 (diff)
parentc66aec4dfae559004e88da968d1ce57584e144ee (diff)
Merge branch 'next_python3' into next
This brings Python3 to `next`. It also brings * a bump in SWIG dependency version * various GRC improvements, * YAML instead of XML in GRC * a lot of broken unit tests
Diffstat (limited to 'grc/core/utils/complexity.py')
-rw-r--r--grc/core/utils/complexity.py49
1 files changed, 0 insertions, 49 deletions
diff --git a/grc/core/utils/complexity.py b/grc/core/utils/complexity.py
deleted file mode 100644
index baa8040db4..0000000000
--- a/grc/core/utils/complexity.py
+++ /dev/null
@@ -1,49 +0,0 @@
-
-def calculate_flowgraph_complexity(flowgraph):
- """ Determines the complexity of a flowgraph """
- dbal = 0
- for block in flowgraph.blocks:
- # Skip options block
- if block.get_key() == 'options':
- continue
-
- # Don't worry about optional sinks?
- sink_list = filter(lambda c: not c.get_optional(), block.get_sinks())
- source_list = filter(lambda c: not c.get_optional(), block.get_sources())
- sinks = float(len(sink_list))
- sources = float(len(source_list))
- base = max(min(sinks, sources), 1)
-
- # Port ratio multiplier
- if min(sinks, sources) > 0:
- multi = sinks / sources
- multi = (1 / multi) if multi > 1 else multi
- else:
- multi = 1
-
- # Connection ratio multiplier
- sink_multi = max(float(sum(map(lambda c: len(c.get_connections()), sink_list)) / max(sinks, 1.0)), 1.0)
- source_multi = max(float(sum(map(lambda c: len(c.get_connections()), source_list)) / max(sources, 1.0)), 1.0)
- dbal = dbal + (base * multi * sink_multi * source_multi)
-
- blocks = float(len(flowgraph.blocks))
- connections = float(len(flowgraph.connections))
- elements = blocks + connections
- disabled_connections = len(filter(lambda c: not c.get_enabled(), flowgraph.connections))
- variables = elements - blocks - connections
- enabled = float(len(flowgraph.get_enabled_blocks()))
-
- # Disabled multiplier
- if enabled > 0:
- disabled_multi = 1 / (max(1 - ((blocks - enabled) / max(blocks, 1)), 0.05))
- else:
- disabled_multi = 1
-
- # Connection multiplier (How many connections )
- if (connections - disabled_connections) > 0:
- conn_multi = 1 / (max(1 - (disabled_connections / max(connections, 1)), 0.05))
- else:
- conn_multi = 1
-
- final = round(max((dbal - 1) * disabled_multi * conn_multi * connections, 0.0) / 1000000, 6)
- return final