ummmmm so max_period is turned into k in the micro_ functions., and passed to the exponent. looks like it's the angle advancement per sample for each sinusoid, so the frequency is proportional to its inverse. meanwhile, sample_idcs i believe are frequencies, as a portion of the total data length np.fft.fftfreq(4) returns [0,0.25,-.5,-.25] 0 is DC 0.25 then would be period = 4 -0.5 is then the nyquist frequency, period=2 so it looks like fftfreq expects frequency to be 1/period draft saved at 1:53 then if we have k in the exponent as 2j * pi * k * n, where n is the index what is the period in samples? well, a period goes by when the exponent is 2j * pi so that's when k * n == 1 . then, the whole thing is N long ... so when k == 1/N, that's an fftfreq .. of ... N? k == 1/N means the period is N. the fftfreq is 1/period, so yes. this means k == fftfreq ... I think? so a possible difference here is the difference in np.linspace(min_k / N, 1, N - 1) from arange(N) * (N * 2 - 1) / (N - 1) if a bisect/troubleshoot the issue by simply trying that arange directly, it may still fail for another reason, sadly. the other reason could be missing data in the transform. i know the current transform can reconstruct a wave; i don't know if the other will. maybe i can test it alone. draft saved a little late at 2:00p oh i don't have the freqs yet, i have sample indices i'm using numpy's default frequencies these default frequencies, are periods equal to 2, 4, and infinity.