RMSD has no fixed meaning across lengths: 3 angstrom is excellent for a 300-residue protein and poor for a 40-residue one. The d0 normalisation fixes that, so a TM-score above 0.5 means the same fold at any size. The distance weighting also caps the damage a few badly placed loops can do.
Examples
V <- c(1, 2, 3, 4, 5, 6, 7, 8)
Tmscore(V, V)
#> $estimate
#> [1] 1
#>
#> $d0
#> [1] 0.5
#>
#> $rmsd
#> [1] 0
#>
#> $L
#> [1] 8
#>
#> $L_ref
#> [1] 8
#>
#> $method
#> [1] "TM-score structural similarity"
#>
#> attr(,"class")
#> [1] "morie_rich_result" "list"
