I was getting very worried about my phd research because I kept getting far worse results in my python simulation than the figures showed back when I was doing it in matlab and I thought I was doing everything exactly the same and I thought that maybe i had made the whole thing up.
But then I realised that in my old code I was windowing the FFT before processing and I had that line commented out in python. After fixing that things are back to being the magic that they should be.