File Complexity Overall
  • There are 3,032 files with units, with 680,992 lines of code.
    • 90 very complex files (McCabe index sum 251+; 83,966 lines of code)
    • 190 complex files (McCabe index sum 126-250; 100,875 lines of code)
    • 651 medium complex files (McCabe index sum 51-125; 194,416 lines of code)
    • 675 slightly complex files (McCabe index sum 26-50; 144,619 lines of code)
    • 1,426 simple files (McCabe index sum 1-25; 157,116 lines of code)
  • 604 main files have no units (e.g. languages without unit analysis, or files without functions) and are not classified.
system12% | 14% | 28% | 21% | 23%
Legend:
251+
126-250
51-125
26-50
1-25


explore: grouped by folders | grouped by complexity
File Complexity per Extension
251+
126-250
51-125
26-50
1-25
py12% | 14% | 28% | 21% | 22%
cc12% | 0% | 48% | 11% | 27%
h0% | 0% | 22% | 33% | 44%
pyi0% | 0% | 0% | 25% | 74%
cpp0% | 0% | 0% | 0% | 100%
File Complexity per Logical Decomposition
primary
251+
126-250
51-125
26-50
1-25
common27% | 22% | 35% | 9% | 4%
opendde17% | 17% | 26% | 27% | 11%
protenix_v211% | 10% | 28% | 26% | 23%
esmfold216% | 33% | 26% | 5% | 17%
openfold3_ob07% | 8% | 20% | 23% | 40%
boltz218% | 24% | 27% | 13% | 16%
openfold37% | 7% | 22% | 22% | 39%
protenix_v134% | 28% | 20% | 9% | 6%
chrombpnet50% | 15% | 15% | 11% | 6%
af3_torch22% | 3% | 28% | 18% | 27%
proteinmpnn43% | 0% | 28% | 19% | 8%
rosettafold315% | 20% | 30% | 15% | 18%
gpnstar47% | 0% | 37% | 6% | 8%
chai18% | 7% | 24% | 16% | 41%
atlasfold5% | 1% | 16% | 22% | 53%
rfdiffusion314% | 8% | 41% | 18% | 17%
af3_jax2% | 10% | 28% | 19% | 38%
flashzoi17% | 22% | 33% | 9% | 16%
colabfold8% | 18% | 45% | 11% | 16%
esmc10% | 14% | 28% | 29% | 16%
mosaic4% | 28% | 24% | 31% | 10%
ef2inv6% | 30% | 43% | 15% | 3%
boltzgen6% | 25% | 17% | 27% | 22%
enformer_deepmind19% | 0% | 57% | 8% | 14%
af2ig7% | 19% | 38% | 24% | 10%
pxdesign0% | 9% | 29% | 30% | 30%
evo20% | 21% | 25% | 35% | 18%
genie30% | 25% | 25% | 26% | 23%
rfdiffusion10% | 16% | 32% | 30% | 19%
colabdesign0% | 13% | 58% | 19% | 8%
progen20% | 15% | 52% | 16% | 14%
e10% | 4% | 44% | 29% | 21%
enformer0% | 13% | 50% | 18% | 17%
caliby0% | 0% | 16% | 66% | 17%
borzoi0% | 0% | 69% | 13% | 16%
complexa0% | 0% | 56% | 32% | 11%
esm_if10% | 0% | 34% | 32% | 32%
Most Complex Files (Top 50)

The McCabe index of a file grows with its size: per 100 lines tells a large but plain file from a dense one, and most complex unit whether the complexity sits in one unit or is spread over many.

File# lines# unitsMcCabe index
(sum)
per 100
lines
most complex
unit
__init__.py
in common/opt_core/opt_core/kernels/trimul
1699 99 1000 59 124
__init__.py
in common/opt_core/opt_core/kernels/apb
1406 73 748 53 91
__init__.py
in common/opt_core/opt_core/kernels/transition
1448 89 702 48 65
typing_extensions.py
in chrombpnet/opt/kit/torch/chrombpnet_k1/_vendor
2610 214 687 26 32
stack.py
in boltz2/opt/boltz2_opt
1047 54 627 60 301
dist.py
in common/opt_core/opt_core/mem/rowpair
1424 173 601 42 22
stack.py
in esmfold2/opt/esmfold2_opt
1192 78 591 50 38
modes.py
in af3_jax/opt/af3_jax_opt
843 50 573 68 184
pair_fused.py
in common/opt_core/opt_core/attn
1272 81 567 45 38
__init__.py
in common/opt_core/opt_core/kernels/ln
783 45 506 65 133
report.py
in rosettafold3/opt/rosettafold3_opt
564 40 504 89 89
__init__.py
in common/opt_core/opt_core/kernels/triattn
915 52 500 55 102
confidence.py
in common/opt_core/opt_core/mem/rowpair
1177 80 487 41 48
report.py
in protenix_v1/opt/protenix_v1_opt
730 57 484 66 144
triatt.py
in common/opt_core/opt_core/mem/rowpair
1292 77 468 36 70
stack.py
in opendde/opt/opendde_opt
875 27 465 53 285
ef2_opt.py
in esmfold2/opt/forward/fast_inference/driver
1255 65 453 36 50
census.py
in rfdiffusion3/opt/rfdiffusion3_opt
980 83 451 46 44
ptx_trunk2_levers.py
in protenix_v2/opt/forward/flashpairformer/src
1302 49 432 33 84
template.py
in common/opt_core/opt_core/mem/rowpair
861 56 430 50 60
tp.py
in opendde/opt/opendde_opt
1302 92 427 33 29
graphs.py
in common/opt_core/opt_core/capture
1099 80 426 39 30
__init__.py
in common/opt_core/opt_core/kernels/pallas
617 46 415 67 73
evidence.py
in ef2inv/opt/ef2inv_opt
600 15 400 67 266
stack.py
in protenix_v2/opt/protenix_opt
929 53 397 43 70
rowpair.py
in esmfold2/opt/esmfold2_opt
1124 59 383 34 46
report.py
in boltz2/opt/boltz2_opt
535 37 383 72 241
cli.py
in openfold3_ob0/opt/openfold3_ob0_opt
892 60 383 43 29
tp.py
in protenix_v1/opt/protenix_v1_opt
1364 81 381 28 21
report.py
in protenix_v2/opt/protenix_opt
591 44 378 64 29
cubin_launch.cc
in common/opt_core/opt_core/kernels/triattn_xla/csrc
700 34 360 51 57
mpnn_worker2.py
in proteinmpnn/opt/forward/mpnn_exact_worker/addon
1031 49 352 34 60
of3_offload.py
in openfold3/opt/forward/offload/of3o
1169 44 348 30 31
big.py
in protenix_v1/opt/protenix_v1_opt
974 58 347 36 35
_levers.py
in enformer_deepmind/opt/enformer_deepmind_opt
470 24 342 73 57
thin_launch.py
in esmc/opt/esmc_opt/kits/thin
706 41 342 48 48
stack.py
in colabfold/opt/colabfold_opt
784 62 339 43 72
of3_offload.py
in openfold3_ob0/opt/forward/offload/of3o
1157 44 339 29 31
stack.py
in openfold3/opt/openfold3_opt
761 62 338 44 42
stack.py
in gpnstar/opt/gpnstar_opt
689 40 335 49 27
stack.py
in openfold3_ob0/opt/openfold3_ob0_opt
744 63 331 44 34
tp.py
in openfold3_ob0/opt/openfold3_ob0_opt
676 46 328 49 73
trunk.py
in common/opt_core/opt_core/mem/rowpair
843 81 325 39 24
levers_ptx1.py
in protenix_v1/opt/forward/v05_addon/ptxfpf
713 56 321 45 23
bz_pairfuse.py
in boltz2/opt/forward/pairfuse
742 62 321 43 23
stack.py
in chai1/opt/chai1_opt
736 58 317 43 27
alphafold.py
in common/opt_core/opt_core/mem/rowpair_jax
1063 67 313 29 47
tp.py
in openfold3/opt/openfold3_opt
678 45 313 46 75
__init__.py
in chrombpnet/opt/kit_ho/tf/chrombpnet_fastkit
736 42 312 42 76
report.py
in esmfold2/opt/esmfold2_opt
573 58 312 54 40
About This Analysis
  • File complexity is the sum of the McCabe indexes (conditional complexity) of the units (methods, functions...) in a file.
  • Files are classified in five categories based on that sum: 1-25 (simple files), 26-50 (slightly complex files), 51-125 (medium complex files), 126-250 (complex files), 251+ (very complex files). The default bands are five times the unit complexity bands, as a file is a group of units.
  • Only main code files with units are classified. Files without units (languages without unit analysis, or files without functions) have no complexity to measure and are left out rather than counted as simple.
  • A very complex file holds many decisions, which often means it has too many responsibilities: a candidate to split, and a place where changes need more testing.
Learn more...