{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"\nimport pyfstat\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom PIL import Image as Img\nimport random\nimport io\nimport os\nimport json\nfrom pyfstat.utils import get_sft_as_arrays\n\n\ndef json_filename_from_params(signal_v,tstart,f0,h0,f1,alpha,delta,cosi,psi,phi,sqrtSX):\n    savefname = [str(int(tstart))]\n    for value in [f0,h0,f1,alpha,delta,cosi,psi,phi,sqrtSX * 1e24]:\n        savefname.append(str(round(value, 2)))\n    savefname = \"_\".join(savefname) + f\"_{signal_v}.json\"\n    return savefname        \n\n\ndef full_json_from_data(g):\n    startpx = int(random.random() * (g[\"H1\"].shape[0] - 361))\n    \n    h1raw = g[\"H1\"][startpx:startpx+360]\n    l1raw = g[\"L1\"][startpx:startpx+360]\n    fullacross = min(h1raw.shape[1], l1raw.shape[1])\n    \n    img = np.empty((4, 360, fullacross), dtype=np.float32)\n\n    startpx = int(random.random() * (g[\"H1\"].shape[0] - 361))\n    a = g[\"H1\"][startpx:startpx+360][:, :fullacross] * 1e22\n    img[0] = a.real\n    img[1] = a.imag\n    \n    a = g[\"L1\"][startpx:startpx+360][:, :fullacross] * 1e22\n    img[2] = a.real\n    img[3] = a.imag\n    \n    return img\n\n\nos.mkdir(\"./signals\")\nos.mkdir(\"./signals_test\")\n\nfor foldername in [\"signals\", \"signals_test\"]:\n\n    print(\"GENERATING\")\n    \n    SIGNALS_TO_GENERATE = 5\n    \n    for i_images in range(SIGNALS_TO_GENERATE):\n        print(\"====================== IMAGE \", i_images)\n\n        sft_path = []\n\n    #     try:\n        pi = 3.141592\n\n        tstart = 1238166018\n        totaldiff = 200000\n        tdiff = int(random.random() * totaldiff) - (totaldiff / 2)\n        tstart = tstart - tdiff\n\n        f0 = random.random() * (500 - 50) + 50\n        h0 = random.random() * (100 - 10) + 10\n\n        f1 = random.random() * (1.0e-8 - 1.0e-12) + 1.0e-12\n        alpha = random.random() * (2*pi - 0) + 0\n        delta = random.random() * ((pi/2) - (-pi/2)) + (-pi/2)\n        cosi = random.random() * (1 - (-1)) + (-1)\n        psi = random.random() * ((pi/4) - (-pi/4)) + (-pi/4)\n        phi = random.random() * ((2*pi) - (0)) + (0)\n\n        sqrtSX = 5e-24\n\n        band = 0.36\n        tdur = 7.5 * 86400\n\n        signal_kwargs = {\n            \"outdir\": \"gen_outdir\",\n            \"tstart\": tstart,\n            \"duration\": tdur,\n            \"detectors\": \"H1,L1\",\n            \"Tsft\": 1800,\n            \"Band\": band,\n\n            \"sqrtSX\": sqrtSX,\n            \"SFTWindowType\": \"tukey\", \n            \"SFTWindowBeta\": 0.01,\n\n            \"F0\": f0, # 50 to 500\n        }\n\n        signal_writer = pyfstat.Writer( **signal_kwargs )\n        signal_writer.make_data()        \n        sft_path.append(signal_writer.sftfilepath)\n\n        freqs, times, sft_data = get_sft_as_arrays(\";\".join(sft_path))\n\n        gen_signal = random.random() < 0.5\n\n        if not gen_signal:\n            gg = full_json_from_data(sft_data)    \n            fname = json_filename_from_params(\"0\",tstart,f0,h0,f1,alpha,delta,cosi,psi,phi,sqrtSX)\n            np.save(f\"./{foldername}/{fname}\", gg)  \n\n        if gen_signal:\n            signal_kwargs2 = {\n                \"outdir\": \"gen_outdir\",\n                \"tstart\": tstart,\n                \"duration\": 7.5 * 86400,\n                \"detectors\": \"H1,L1\",\n                \"Tsft\": 1800,\n                \"Band\": band, \n\n                \"sqrtSX\": 0,\n                \"SFTWindowType\": \"tukey\", \n                \"SFTWindowBeta\": 0.01,\n\n                \"F0\": f0, # 50 to 500\n\n                \"h0\": sqrtSX / h0, # div by 10 to 1000\n                \"F1\": f1, # 1.0e-12 to 1.0e-8 (or so; could be to 0)\n                \"Alpha\": alpha, # 0 to 2pi\n                \"Delta\": delta, # -pi/2 to pi/2\n                \"cosi\": cosi, # -1.0 to 1.0\n                \"psi\": psi, # any (mapped -pi/4 to pi/4)\n                \"phi\": phi, # any (mapped 0 to 2pi)\n\n                \"noiseSFTs\": \";\".join(sft_path)\n            }\n            signal_writer = pyfstat.Writer( **signal_kwargs2 )\n            signal_writer.make_data()\n            signal_sft_path = signal_writer.sftfilepath\n\n\n            freqs, times, sft_data = get_sft_as_arrays(signal_sft_path)\n            gg = full_json_from_data(sft_data)\n\n            fname = json_filename_from_params(\"1\",tstart,f0,h0,f1,alpha,delta,cosi,psi,phi,sqrtSX)\n            np.save(f\"./{foldername}/{fname}\", gg)  \n\n            for sft_f in signal_sft_path.split(\";\"):\n                try:\n                    os.remove(sft_f)\n                except:\n                    print(\"NO FILE 1: \", sft_f)\n        for sft_f in sft_path:\n            for sft_f_f in sft_f.split(\";\"):\n                try:\n                    os.remove(sft_f_f)\n                except:\n                    print(\"NO FILE 2: \", sft_f_f)\n\n\nprint(\"DONE\")\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]}]}