@EricMH is a recent PhD graduate from Richard Mark’s group, who is one of the leading lights of the Intelligent Design movement. @EricMH agreed to have a deeper conversation with me on one of his mentor’s key contributions, Algorithmic Specified Complexity (ASC). This is an information theory based metric proposed by Marks ( http://robertmarks.org/REPRINTS/2014_AlgorithmicSpecifiedComplexity.pdf ).
I coded this metric up in a few lines of python. You can look at the code, and even run it yourself here: https://repl.it/@swamidass/AlgorithmicSpecifiedComplexity. The code (minus the imports):
def IID_info(seq):
counts = [len(list(group)) for token, group in itertools.groupby(sorted(seq))]
total = float(sum(counts))
info = [-math.log(c / total, 2) * c for c in counts ]
return sum(info)
def GZ_size(seq):
S = StringIO.StringIO()
F = gzip.GzipFile(mode='wb', fileobj=S)
F.write(seq); F.close(); S.flush()
return len(S.getvalue()) * 8
def tokens(seq, shuffle=False):
L = list(s for s,g in itertools.groupby(sorted(seq)))
if shuffle: random.shuffle(L)
return "".join(L)
def GZ_info(seq):
toks = tokens(seq)
return GZ_size(seq) - GZ_size(toks)
def ASC(seq, comp_info = GZ_info):
return max(0, IID_info(seq) - comp_info(seq))
AlgorithmicSpecifiedComplexity = ASC
This code, for example, computes the ASC content of a test block of text at 817 bits.
@EricMH, do you agree this is a correct implementation? If not, please fix it. Once we have agreement here, I’ll move on to the next piece of the story.