import%20marimo%0A%0A__generated_with%20%3D%20%220.23.9%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%2002%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%A8%E6%93%8D%E4%BD%9C%0A%20%20%20%20%23%23%20%E7%8F%BE%E5%AE%9F%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92Wandas%E3%81%A7%E6%89%B1%E3%81%86%0A%0A%20%20%20%20%E3%81%93%E3%81%AEmarimo%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A7%E3%81%AF%E3%80%81%E5%AE%9F%E9%9A%9B%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%EF%BC%88WAV%2C%20CSV%E3%81%AA%E3%81%A9%EF%BC%89%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%80%81%0A%20%20%20%20Wandas%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0%E3%82%92%E7%90%86%E8%A7%A3%E3%81%97%E3%80%81%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E6%93%8D%E4%BD%9C%E3%82%92%E7%B4%B9%E4%BB%8B%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20**%E5%AD%A6%E7%BF%92%E7%9B%AE%E6%A8%99%3A**%0A%20%20%20%20-%20%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%E5%BC%8F%E3%81%8B%E3%82%89%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%20%20%20%20-%20ChannelFrame%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0%E3%81%AE%E7%90%86%E8%A7%A3%0A%20%20%20%20-%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A8%E6%93%8D%E4%BD%9C%0A%20%20%20%20-%20%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E7%AE%A1%E7%90%86%0A%0A%20%20%20%20**%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6%3A**%0A%20%20%20%20-%2001_getting_started.py%20%E3%82%92%E5%AE%8C%E4%BA%86%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%8E%AF%20%E3%81%AA%E3%81%9C%E3%83%87%E3%83%BC%E3%82%BF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%8C%E9%87%8D%E8%A6%81%E3%81%8B%0A%0A%20%20%20%20%23%23%23%20%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E7%AC%AC%E4%B8%80%E6%AD%A9%0A%0A%20%20%20%20**%E3%83%87%E3%83%BC%E3%82%BF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF**%E3%81%AF%E3%80%81%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E6%9C%80%E3%82%82%E9%87%8D%E8%A6%81%E3%81%AA%E7%AC%AC%E4%B8%80%E6%AD%A9%E3%81%A7%E3%81%99%E3%80%82%E3%81%AA%E3%81%9C%E3%81%AA%E3%82%89%EF%BC%9A%0A%0A%20%20%20%201.%20**%E7%8F%BE%E5%AE%9F%E4%B8%96%E7%95%8C%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF**%E3%82%92%E6%89%B1%E3%81%86%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%0A%20%20%20%202.%20**%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88**%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%0A%20%20%20%203.%20**%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E5%93%81%E8%B3%AA**%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%0A%20%20%20%204.%20**%E9%81%A9%E5%88%87%E3%81%AA%E6%A7%8B%E9%80%A0**%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BF%9D%E6%8C%81%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%0A%0A%20%20%20%20%23%23%23%20Wandas%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%AE%E7%89%B9%E5%BE%B4%0A%0A%20%20%20%20-%20**%E7%B5%B1%E4%B8%80%E3%81%95%E3%82%8C%E3%81%9F%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9**%3A%20%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%E5%BC%8F%E3%82%92%E5%90%8C%E3%81%98%E6%96%B9%E6%B3%95%E3%81%A7%E6%89%B1%E3%81%88%E3%82%8B%0A%20%20%20%20-%20**%E8%87%AA%E5%8B%95%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E6%8A%BD%E5%87%BA**%3A%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%80%81%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E6%83%85%E5%A0%B1%E3%81%AA%E3%81%A9%E3%82%92%E8%87%AA%E5%8B%95%E5%8F%96%E5%BE%97%0A%20%20%20%20-%20**%E6%9F%94%E8%BB%9F%E3%81%AA%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3**%3A%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E8%A8%AD%E5%AE%9A%E3%81%A7%E7%89%B9%E6%AE%8A%E3%81%AA%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%AB%E5%AF%BE%E5%BF%9C%0A%20%20%20%20-%20**%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AA%E3%83%B3%E3%82%B0**%3A%20%E5%95%8F%E9%A1%8C%E3%81%AE%E3%81%82%E3%82%8B%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E9%81%A9%E5%88%87%E3%81%AB%E5%87%A6%E7%90%86%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%93%82%20%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%E5%BC%8F%0A%0A%20%20%20%20%23%23%23%20%E4%B8%BB%E8%A6%81%E3%81%AA%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%0A%0A%20%20%20%20%7C%20%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%20%7C%20%E7%94%A8%E9%80%94%20%7C%20%E7%89%B9%E5%BE%B4%20%7C%0A%20%20%20%20%7C------------%7C------%7C------%7C%0A%20%20%20%20%7C%20**WAV**%20%7C%20%E9%9F%B3%E5%A3%B0%E3%83%87%E3%83%BC%E3%82%BF%20%7C%20%E8%A4%87%E6%95%B0%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%80%81%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E8%B1%8A%E5%AF%8C%20%7C%0A%20%20%20%20%7C%20**CSV**%20%7C%20%E6%99%82%E7%B3%BB%E5%88%97%E3%83%87%E3%83%BC%E3%82%BF%20%7C%20%E8%A1%A8%E5%BD%A2%E5%BC%8F%E3%80%81%E6%9F%94%E8%BB%9F%E3%81%AA%E6%A7%8B%E9%80%A0%20%7C%0A%20%20%20%20%7C%20**WDF**%20%7C%20Wandas%E5%B0%82%E7%94%A8%20%7C%20%E5%AE%8C%E5%85%A8%E3%81%AA%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E4%BF%9D%E5%AD%98%20%7C%0A%20%20%20%20%7C%20**NumPy**%20%7C%20%E9%85%8D%E5%88%97%E3%83%87%E3%83%BC%E3%82%BF%20%7C%20%E9%AB%98%E9%80%9F%E3%80%81%E3%83%A1%E3%83%A2%E3%83%AA%E5%8A%B9%E7%8E%87%E7%9A%84%20%7C%0A%0A%20%20%20%20%23%23%23%20%E3%83%A6%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%82%B9%E5%88%A5%E3%81%AE%E9%81%B8%E6%8A%9E%0A%0A%20%20%20%20-%20**%E9%9F%B3%E5%A3%B0%E5%8F%8E%E9%8C%B2%E3%83%87%E3%83%BC%E3%82%BF**%20%E2%86%92%20WAV%0A%20%20%20%20-%20**%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%87%E3%83%BC%E3%82%BF**%20%E2%86%92%20CSV%0A%20%20%20%20-%20**%E5%87%A6%E7%90%86%E6%B8%88%E3%81%BF%E3%83%87%E3%83%BC%E3%82%BF**%20%E2%86%92%20WDF%0A%20%20%20%20-%20**%E8%A8%88%E7%AE%97%E7%B5%90%E6%9E%9C**%20%E2%86%92%20NumPy%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20%23%20%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%0A%20%20%20%20import%20urllib.request%0A%20%20%20%20from%20pathlib%20import%20Path%0A%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20soundfile%20as%20sf%0A%0A%20%20%20%20import%20wandas%20as%20wd%0A%0A%20%20%20%20pathlib_path%20%3D%20Path%0A%0A%20%20%20%20%23%20%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%97%E3%83%AD%E3%83%83%E3%83%88%E8%A8%AD%E5%AE%9A%0A%20%20%20%20%23%20'%25matplotlib%20widget'%20command%20supported%20automatically%20in%20marimo%0A%20%20%20%20plt.rcParams%5B%22figure.figsize%22%5D%20%3D%20(12%2C%206)%0A%0A%20%20%20%20print(f%22Wandas%3A%20%7Bwd.__version__%7D%22)%0A%20%20%20%20print(%22%E2%9C%85%20%E6%BA%96%E5%82%99%E5%AE%8C%E4%BA%86%22)%0A%20%20%20%20return%20np%2C%20pathlib_path%2C%20plt%2C%20sf%2C%20urllib%2C%20wd%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%8E%B5%20WAV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%0A%20%20%20%20%23%23%23%20%E3%81%AA%E3%81%9CWAV%E3%81%8C%E9%87%8D%E8%A6%81%E3%81%8B%0A%0A%20%20%20%20WAV%E3%81%AF**%E9%9F%B3%E5%A3%B0%E3%83%BB%E6%8C%AF%E5%8B%95%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%99%E6%BA%96%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88**%E3%81%A7%E3%81%99%EF%BC%9A%0A%20%20%20%20-%20**%E7%84%A1%E5%9C%A7%E7%B8%AE**%3A%20%E9%AB%98%E3%81%84%E9%9F%B3%E8%B3%AA%E3%82%92%E4%BF%9D%E8%A8%BC%0A%20%20%20%20-%20**%E8%A4%87%E6%95%B0%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB**%3A%20%E3%82%B9%E3%83%86%E3%83%AC%E3%82%AA%E3%82%84%E3%83%9E%E3%82%A4%E3%82%AF%E3%82%A2%E3%83%AC%E3%82%A4%E3%81%AB%E5%AF%BE%E5%BF%9C%0A%20%20%20%20-%20**%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF**%3A%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%80%81%E3%83%93%E3%83%83%E3%83%88%E6%B7%B1%E5%BA%A6%E3%81%AA%E3%81%A9%E3%81%AE%E6%83%85%E5%A0%B1%0A%20%20%20%20-%20**%E5%BA%83%E3%81%8F%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88**%3A%20%E3%81%BB%E3%81%A8%E3%82%93%E3%81%A9%E3%81%AE%E9%8C%B2%E9%9F%B3%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%A7%E4%BD%BF%E7%94%A8%E5%8F%AF%E8%83%BD%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(pathlib_path%2C%20urllib)%3A%0A%20%20%20%20%23%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%ABWAV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%0A%20%20%20%20wav_url%20%3D%20%22https%3A%2F%2Fgithub.com%2Fkasahart%2Fwandas%2Fraw%2Frefs%2Fheads%2Fmain%2Flearning-path%2Fsample_audio.wav%22%0A%20%20%20%20wav_path%20%3D%20pathlib_path(%22sample_audio.wav%22)%0A%0A%20%20%20%20%23%20%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%EF%BC%88%E6%97%A2%E3%81%AB%E5%AD%98%E5%9C%A8%E3%81%97%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%EF%BC%89%0A%20%20%20%20if%20not%20wav_path.exists()%3A%0A%20%20%20%20%20%20%20%20print(%22%E3%82%B5%E3%83%B3%E3%83%97%E3%83%ABWAV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E4%B8%AD...%22)%0A%20%20%20%20%20%20%20%20urllib.request.urlretrieve(wav_url%2C%20wav_path)%0A%20%20%20%20%20%20%20%20print(f%22%E2%9C%85%20%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E5%AE%8C%E4%BA%86%3A%20%7Bwav_path%7D%22)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20print(f%22%E2%9C%85%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%97%A2%E3%81%AB%E5%AD%98%E5%9C%A8%3A%20%7Bwav_path%7D%22)%0A%20%20%20%20return%20(wav_path%2C)%0A%0A%0A%40app.cell%0Adef%20_(wav_path%2C%20wd)%3A%0A%20%20%20%20%23%20WAV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%20%20%20%20audio%20%3D%20wd.read(wav_path)%0A%0A%20%20%20%20print(%22%F0%9F%8E%B5%20WAV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E7%B5%90%E6%9E%9C%3A%22)%0A%20%20%20%20print(f%22%20%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%3A%20%7Bwav_path.name%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E6%95%B0%3A%20%7Baudio.n_channels%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%3A%20%7Baudio.sampling_rate%7D%20Hz%22)%0A%20%20%20%20print(f%22%20%20%E9%95%B7%E3%81%95%3A%20%7Baudio.duration%3A.2f%7D%20%E7%A7%92%22)%0A%20%20%20%20print(f%22%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E6%95%B0%3A%20%7Baudio.n_samples%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%3A%20%7Baudio.data.dtype%7D%22)%0A%20%20%20%20print(f%22%20%20%E9%85%8D%E5%88%97%E3%81%AE%E5%90%91%E3%81%8D%3A%20channel-first%20%7Baudio.shape%7D%22)%0A%20%20%20%20print(f%22%20%20full-scale%E7%AF%84%E5%9B%B2%3A%20%5B%7Baudio.data.min()%3A.6f%7D%2C%20%7Baudio.data.max()%3A.6f%7D%5D%20FS%22)%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E5%90%8D%3A%20%7Baudio.labels%7D%22)%0A%20%20%20%20return%20(audio%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20**%F0%9F%8E%A7%20%E8%81%9E%E3%81%84%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%EF%BC%81**%0A%0A%20%20%20%20WAV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%86%85%E5%AE%B9%E3%82%92%E5%AE%9F%E9%9A%9B%E3%81%AB%E8%81%B4%E3%81%8F%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(audio)%3A%0A%20%20%20%20%23%20%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%93%E3%81%A0%E9%9F%B3%E5%A3%B0%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%AF%E8%A6%96%E5%8C%96%0A%20%20%20%20audio.describe()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%93%8A%20CSV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%0A%20%20%20%20%23%23%23%20%E3%81%AA%E3%81%9CCSV%E3%81%8C%E9%87%8D%E8%A6%81%E3%81%8B%0A%0A%20%20%20%20CSV%E3%81%AF**%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%87%E3%83%BC%E3%82%BF%E3%82%84%E8%A8%88%E6%B8%AC%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%99%E6%BA%96%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88**%E3%81%A7%E3%81%99%EF%BC%9A%0A%20%20%20%20-%20**%E8%A1%A8%E5%BD%A2%E5%BC%8F**%3A%20%E6%99%82%E9%96%93%E8%BB%B8%E3%81%A8%E8%A4%87%E6%95%B0%E3%81%AE%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E5%80%A4%E3%82%92%E6%89%B1%E3%81%84%E3%82%84%E3%81%99%E3%81%84%0A%20%20%20%20-%20**%E6%B1%8E%E7%94%A8%E6%80%A7**%3A%20Excel%2C%20MATLAB%2C%20Python%E3%81%AA%E3%81%A9%E5%A4%9A%E3%81%8F%E3%81%AE%E3%83%84%E3%83%BC%E3%83%AB%E3%81%A7%E6%89%B1%E3%81%88%E3%82%8B%0A%20%20%20%20-%20**%E6%9F%94%E8%BB%9F%E6%80%A7**%3A%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%AB%E5%AF%BE%E5%BF%9C%E5%8F%AF%E8%83%BD%0A%20%20%20%20-%20**%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%99%E3%83%BC%E3%82%B9**%3A%20%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%A7%E6%89%B1%E3%81%84%E3%82%84%E3%81%99%E3%81%84%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(pathlib_path%2C%20urllib)%3A%0A%20%20%20%20%23%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%ABCSV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%0A%20%20%20%20csv_path%20%3D%20pathlib_path(%22sensor_data.csv%22)%0A%20%20%20%20csv_url%20%3D%20%22https%3A%2F%2Fraw.githubusercontent.com%2Fkasahart%2Fwandas%2Frefs%2Fheads%2Fmain%2Flearning-path%2Fsensor_data.csv%22%0A%0A%20%20%20%20if%20not%20csv_path.exists()%3A%0A%20%20%20%20%20%20%20%20print(%22%E3%82%B5%E3%83%B3%E3%83%97%E3%83%ABCSV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E4%B8%AD...%22)%0A%20%20%20%20%20%20%20%20urllib.request.urlretrieve(csv_url%2C%20csv_path)%0A%20%20%20%20%20%20%20%20print(f%22%E2%9C%85%20%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E5%AE%8C%E4%BA%86%3A%20%7Bcsv_path%7D%22)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20print(f%22%E2%9C%85%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%97%A2%E3%81%AB%E5%AD%98%E5%9C%A8%3A%20%7Bcsv_path%7D%22)%0A%0A%20%20%20%20import%20pandas%20as%20pd%0A%0A%20%20%20%20df%20%3D%20pd.read_csv(csv_path)%0A%20%20%20%20print(f%22%E2%9C%85%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%ABCSV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%BA%96%E5%82%99%E5%AE%8C%E4%BA%86%3A%20%7Bcsv_path%7D%22)%0A%20%20%20%20print(f%22%20%20%20%E8%A1%8C%E6%95%B0%3A%20%7Blen(df)%7D%22)%0A%20%20%20%20print(f%22%20%20%20%E5%88%97%3A%20%7Blist(df.columns)%7D%22)%0A%20%20%20%20return%20(csv_path%2C)%0A%0A%0A%40app.cell%0Adef%20_(csv_path%2C%20wd)%3A%0A%20%20%20%20%23%20CSV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%20%20%20%20sensor_data%20%3D%20wd.read(%0A%20%20%20%20%20%20%20%20csv_path%2C%0A%20%20%20%20%20%20%20%20time_column%3D%22time%22%2C%20%20%23%20%E6%99%82%E9%96%93%E8%BB%B8%E3%81%AE%E5%88%97%E5%90%8D%0A%20%20%20%20%20%20%20%20delimiter%3D%22%2C%22%2C%20%20%23%20%E5%8C%BA%E5%88%87%E3%82%8A%E6%96%87%E5%AD%97%0A%20%20%20%20)%0A%0A%20%20%20%20print(%22%F0%9F%93%8A%20CSV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E7%B5%90%E6%9E%9C%3A%22)%0A%20%20%20%20print(f%22%20%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%3A%20%7Bcsv_path.name%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E6%95%B0%3A%20%7Bsensor_data.n_channels%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%3A%20%7Bsensor_data.sampling_rate%3A.1f%7D%20Hz%22)%0A%20%20%20%20print(f%22%20%20%E9%95%B7%E3%81%95%3A%20%7Bsensor_data.duration%3A.1f%7D%20%E7%A7%92%22)%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E5%90%8D%3A%20%7Bsensor_data.labels%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%87%E3%83%BC%E3%82%BF%E5%BD%A2%E7%8A%B6%3A%20%7Bsensor_data.shape%7D%22)%0A%20%20%20%20return%20(sensor_data%2C)%0A%0A%0A%40app.cell%0Adef%20_(sensor_data)%3A%0A%20%20%20%20%23%20%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%AF%E8%A6%96%E5%8C%96%0A%20%20%20%20sensor_data.describe()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%94%A2%20NumPy%E9%85%8D%E5%88%97%E3%81%8B%E3%82%89%E3%81%AE%E4%BD%9C%E6%88%90%0A%0A%20%20%20%20%23%23%23%20%E3%81%AA%E3%81%9CNumPy%E9%85%8D%E5%88%97%E3%81%8C%E9%87%8D%E8%A6%81%E3%81%8B%0A%0A%20%20%20%20NumPy%E9%85%8D%E5%88%97%E3%81%AF**%E8%A8%88%E7%AE%97%E7%B5%90%E6%9E%9C%E3%82%84%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%87%E3%83%BC%E3%82%BF**%E3%81%AE%E6%A8%99%E6%BA%96%E5%BD%A2%E5%BC%8F%E3%81%A7%E3%81%99%EF%BC%9A%0A%20%20%20%20-%20**%E9%AB%98%E9%80%9F%E5%87%A6%E7%90%86**%3A%20%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E5%8C%96%E3%81%95%E3%82%8C%E3%81%9F%E6%BC%94%E7%AE%97%0A%20%20%20%20-%20**%E3%83%A1%E3%83%A2%E3%83%AA%E5%8A%B9%E7%8E%87**%3A%20%E9%80%A3%E7%B6%9A%E3%81%97%E3%81%9F%E3%83%A1%E3%83%A2%E3%83%AA%E9%85%8D%E7%BD%AE%0A%20%20%20%20-%20**%E7%9B%B8%E4%BA%92%E9%81%8B%E7%94%A8**%3A%20%E4%BB%96%E3%81%AE%E7%A7%91%E5%AD%A6%E8%A8%88%E7%AE%97%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A8%E3%81%AE%E4%BA%92%E6%8F%9B%E6%80%A7%0A%20%20%20%20-%20**%E6%9F%94%E8%BB%9F%E6%80%A7**%3A%20%E4%BB%BB%E6%84%8F%E3%81%AE%E6%AC%A1%E5%85%83%E6%95%B0%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20wd)%3A%0A%20%20%20%20%23%20NumPy%E9%85%8D%E5%88%97%E3%81%8B%E3%82%89ChannelFrame%E3%82%92%E4%BD%9C%E6%88%90%0A%20%20%20%20np.random.seed(123)%0A%20%20%20%20_sampling_rate%20%3D%201000%20%20%23%201kHz%0A%20%20%20%20_duration%20%3D%202.0%0A%20%20%20%20_n_samples%20%3D%20int(_duration%20*%20_sampling_rate)%0A%20%20%20%20_time%20%3D%20np.linspace(0%2C%20_duration%2C%20_n_samples)%0A%20%20%20%20%23%20%E3%82%B9%E3%83%86%E3%83%AC%E3%82%AA%E9%9F%B3%E5%A3%B0%E9%A2%A8%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%9C%E6%88%90%0A%20%20%20%20left_channel%20%3D%20np.sin(2%20*%20np.pi%20*%20440%20*%20_time)%20%2B%200.1%20*%20np.random.randn(_n_samples)%0A%20%20%20%20right_channel%20%3D%20np.sin(2%20*%20np.pi%20*%20440%20*%20_time%20%2B%20np.pi%20%2F%204)%20%2B%200.1%20*%20np.random.randn(_n_samples)%0A%20%20%20%20stereo_data%20%3D%20np.vstack(%5Bleft_channel%2C%20right_channel%5D)%0A%20%20%20%20stereo_audio%20%3D%20wd.from_numpy(data%3Dstereo_data%2C%20sampling_rate%3D_sampling_rate%2C%20ch_labels%3D%5B%22Left%22%2C%20%22Right%22%5D)%0A%20%20%20%20%23%202D%E9%85%8D%E5%88%97%E3%81%AB%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%0A%20%20%20%20print(%22%F0%9F%94%A2%20NumPy%E9%85%8D%E5%88%97%E3%81%8B%E3%82%89%E3%81%AE%E4%BD%9C%E6%88%90%E7%B5%90%E6%9E%9C%3A%22)%0A%20%20%20%20print(f%22%20%20%E3%83%87%E3%83%BC%E3%82%BF%E5%BD%A2%E7%8A%B6%3A%20%7Bstereo_data.shape%7D%20(channels%2C%20samples)%22)%0A%20%20%20%20%23%20ChannelFrame%E3%82%92%E4%BD%9C%E6%88%90%0A%20%20%20%20print(f%22%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%3A%20%7Bstereo_audio.sampling_rate%7D%20Hz%22)%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E5%90%8D%3A%20%7Bstereo_audio.labels%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%3A%20%7Bstereo_audio.data.dtype%7D%22)%0A%20%20%20%20return%20(stereo_audio%2C)%0A%0A%0A%40app.cell%0Adef%20_(stereo_audio)%3A%0A%20%20%20%20%23%20NumPy%E3%83%87%E3%83%BC%E3%82%BF%E3%82%82%E5%8F%AF%E8%A6%96%E5%8C%96%0A%20%20%20%20stereo_audio.plot(title%3D%22Stereo%20Audio%20from%20NumPy%20Array%22%2C%20overlay%3DFalse)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%8F%97%EF%B8%8F%20ChannelFrame%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0%E3%81%AE%E7%90%86%E8%A7%A3%0A%0A%20%20%20%20%23%23%23%20ChannelFrame%E3%81%AE%E7%89%B9%E5%BE%B4%0A%0A%20%20%20%20ChannelFrame%E3%81%AFWandas%E3%81%AE**%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0**%E3%81%A7%E3%81%99%EF%BC%9A%0A%0A%20%20%20%20-%20**2D%E3%83%87%E3%83%BC%E3%82%BF**%3A%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%20%C3%97%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AE%E8%A1%8C%E5%88%97%0A%20%20%20%20-%20**%E3%83%AA%E3%83%83%E3%83%81%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF**%3A%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%80%81%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E5%90%8D%E3%80%81%E5%8D%98%E4%BD%8D%E3%80%81%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%0A%20%20%20%20-%20**pandas%E3%83%A9%E3%82%A4%E3%82%AFAPI**%3A%20%E7%9B%B4%E6%84%9F%E7%9A%84%E3%81%AA%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%96%B9%E6%B3%95%0A%20%20%20%20-%20**%E5%9E%8B%E5%AE%89%E5%85%A8%E6%80%A7**%3A%20ty%E5%AF%BE%E5%BF%9C%E3%81%AE%E5%8E%B3%E6%A0%BC%E3%81%AA%E5%9E%8B%E4%BB%98%E3%81%91%0A%20%20%20%20-%20**%E9%81%85%E5%BB%B6%E8%A9%95%E4%BE%A1**%3A%20Dask%E3%81%A8%E3%81%AE%E7%B5%B1%E5%90%88%E3%81%A7%E5%A4%A7%E8%A6%8F%E6%A8%A1%E3%83%87%E3%83%BC%E3%82%BF%E5%AF%BE%E5%BF%9C%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(sensor_data)%3A%0A%20%20%20%20%23%20ChannelFrame%E3%81%AE%E6%A7%8B%E9%80%A0%E3%82%92%E8%A9%B3%E3%81%97%E3%81%8F%E8%AA%BF%E3%81%B9%E3%82%8B%0A%20%20%20%20print(%22%F0%9F%8F%97%EF%B8%8F%20ChannelFrame%E3%81%AE%E6%A7%8B%E9%80%A0%E5%88%86%E6%9E%90%3A%22)%0A%20%20%20%20print(f%22%20%20%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%3A%20%7Btype(sensor_data)%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%87%E3%83%BC%E3%82%BF%E5%BD%A2%E7%8A%B6%3A%20%7Bsensor_data.shape%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%87%E3%83%BC%E3%82%BF%E5%9E%8B%EF%BC%88NumPy%EF%BC%89%3A%20%7Bsensor_data.data.dtype%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%83%A1%E3%83%A2%E3%83%AA%E4%BD%BF%E7%94%A8%E9%87%8F%3A%20%7Bsensor_data.data.nbytes%20%2F%201024%3A.1f%7D%20KB%22)%0A%20%20%20%20print()%0A%0A%20%20%20%20%23%20%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E6%83%85%E5%A0%B1%0A%20%20%20%20print(%22%F0%9F%93%8B%20%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%3A%22)%0A%20%20%20%20print(f%22%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%3A%20%7Bsensor_data.sampling_rate%7D%20Hz%22)%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E6%95%B0%3A%20%7Bsensor_data.n_channels%7D%22)%0A%20%20%20%20print(f%22%20%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E6%95%B0%3A%20%7Bsensor_data.n_samples%7D%22)%0A%20%20%20%20print(f%22%20%20%E9%95%B7%E3%81%95%3A%20%7Bsensor_data.duration%3A.2f%7D%20%E7%A7%92%22)%0A%20%20%20%20print(f%22%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E5%90%8D%3A%20%7Bsensor_data.labels%7D%22)%0A%20%20%20%20print(f%22%20%20%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%3A%20%7B%5Bop.name%20for%20op%20in%20sensor_data.operation_history%5D%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%94%8D%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A8%E6%93%8D%E4%BD%9C%0A%0A%20%20%20%20%23%23%23%20pandas%E3%83%A9%E3%82%A4%E3%82%AF%E3%81%AA%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%96%B9%E6%B3%95%0A%0A%20%20%20%20ChannelFrame%E3%81%AF**pandas%E3%81%AEDataFrame%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9**%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%BE%E3%81%99%EF%BC%9A%0A%20%20%20%20-%20**%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9**%3A%20%60cf%5B0%5D%60%2C%20%60cf%5B'channel_name'%5D%60%0A%20%20%20%20-%20**%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%B7%E3%83%B3%E3%82%B0**%3A%20%60cf%5B0%3A2%5D%60%2C%20%60cf%5B%5B'ch1'%2C%20'ch2'%5D%5D%60%0A%20%20%20%20-%20**%E3%83%96%E3%83%BC%E3%83%AB%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9**%3A%20%60cf%5Bcf.rms%20%3E%20threshold%5D%60%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(sensor_data)%3A%0A%20%20%20%20%23%20%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%0A%20%20%20%20print(%22%F0%9F%94%8D%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%96%B9%E6%B3%95%3A%22)%0A%20%20%20%20first_channel%20%3D%20sensor_data%5B0%5D%0A%20%20%20%20%23%20%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A7%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%0A%20%20%20%20print(f%22%20%20cf%5B0%5D%3A%20%7Bfirst_channel.shape%7D%20-%20%7Bfirst_channel.labels%7D%22)%0A%20%20%20%20_accel_x%20%3D%20sensor_data%5B%22accel_x%22%5D%0A%20%20%20%20print(f%22%20%20cf%5B'accel_x'%5D%3A%20%7B_accel_x.shape%7D%20-%20%7B_accel_x.labels%7D%22)%0A%20%20%20%20%23%20%E3%83%A9%E3%83%99%E3%83%AB%E3%81%A7%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%0A%20%20%20%20accel_channels%20%3D%20sensor_data%5B%5B%22accel_x%22%2C%20%22accel_y%22%2C%20%22accel_z%22%5D%5D%0A%20%20%20%20print(f%22%20%20cf%5B%5B'accel_x'%2C%20'accel_y'%2C%20'accel_z'%5D%5D%3A%20%7Baccel_channels.shape%7D%20-%20%7Baccel_channels.labels%7D%22)%0A%20%20%20%20first_two%20%3D%20sensor_data%5B0%3A2%5D%0A%20%20%20%20%23%20%E8%A4%87%E6%95%B0%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E9%81%B8%E6%8A%9E%0A%20%20%20%20%23%20%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%B7%E3%83%B3%E3%82%B0%0A%20%20%20%20print(f%22%20%20cf%5B0%3A2%5D%3A%20%7Bfirst_two.shape%7D%20-%20%7Bfirst_two.labels%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(np%2C%20sensor_data)%3A%0A%20%20%20%20%23%20%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E6%93%8D%E4%BD%9C%0A%20%20%20%20print(%22%F0%9F%8E%AF%20%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E6%93%8D%E4%BD%9C%3A%22)%0A%0A%20%20%20%20%23%20RMS%E5%80%A4%E3%81%A7%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%92%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%0A%20%20%20%20rms_values%20%3D%20sensor_data.rms%0A%20%20%20%20print(f%22%20%20RMS%E5%80%A4%3A%20%7Bdict(zip(sensor_data.labels%2C%20rms_values))%7D%22)%0A%0A%20%20%20%20%23%20RMS%E3%81%8C0.5%E4%BB%A5%E4%B8%8A%E3%81%AE%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%AE%E3%81%BF%E9%81%B8%E6%8A%9E%0A%20%20%20%20active_channels%20%3D%20sensor_data%5Brms_values%20%3E%200.5%5D%0A%20%20%20%20print(f%22%20%20%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%3A%20%7Bactive_channels.labels%7D%22)%0A%0A%20%20%20%20%23%20%E7%89%B9%E5%AE%9A%E3%81%AE%E6%99%82%E9%96%93%E7%AF%84%E5%9B%B2%E3%82%92%E6%8A%BD%E5%87%BA%0A%20%20%20%20time_slice%20%3D%20sensor_data%5B%3A%2C%20100%3A200%5D%20%20%23%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB100-200%0A%20%20%20%20print(f%22%20%20%E6%99%82%E9%96%93%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%B9%3A%20%7Btime_slice.shape%7D%20samples%22)%0A%0A%20%20%20%20%23%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E9%96%93%E3%81%AE%E6%BC%94%E7%AE%97%0A%20%20%20%20magnitude%20%3D%20np.sqrt(sensor_data%5B%22accel_x%22%5D%20**%202%20%2B%20sensor_data%5B%22accel_y%22%5D%20**%202%20%2B%20sensor_data%5B%22accel_z%22%5D%20**%202)%0A%20%20%20%20print(f%22%20%20%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%81%AE%E5%A4%A7%E3%81%8D%E3%81%95%3A%20%7Bmagnitude.shape%7D%22)%0A%20%20%20%20return%20active_channels%2C%20time_slice%0A%0A%0A%40app.cell%0Adef%20_(active_channels%2C%20plt%2C%20sensor_data%2C%20time_slice)%3A%0A%20%20%20%20%23%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E6%93%8D%E4%BD%9C%E3%81%AE%E5%8F%AF%E8%A6%96%E5%8C%96%0A%20%20%20%20fig%2C%20axes%20%3D%20plt.subplots(2%2C%202%2C%20figsize%3D(15%2C%2010))%0A%0A%20%20%20%20%23%20%E5%85%83%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%0A%20%20%20%20sensor_data.plot(ax%3Daxes%5B0%2C%200%5D%2C%20title%3D%22All%20Channels%22%2C%20overlay%3DTrue)%0A%0A%20%20%20%20%23%20%E5%8A%A0%E9%80%9F%E5%BA%A6%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%AE%E3%81%BF%0A%20%20%20%20sensor_data%5B%5B%22accel_x%22%2C%20%22accel_y%22%2C%20%22accel_z%22%5D%5D.plot(ax%3Daxes%5B0%2C%201%5D%2C%20title%3D%22Acceleration%20Only%22%2C%20overlay%3DFalse)%0A%0A%20%20%20%20%23%20%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%AE%E3%81%BF%0A%20%20%20%20active_channels.plot(ax%3Daxes%5B1%2C%200%5D%2C%20title%3D%22Active%20Channels%20Only%22%2C%20overlay%3DTrue)%0A%0A%20%20%20%20%23%20%E6%99%82%E9%96%93%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%B9%0A%20%20%20%20time_slice.plot(ax%3Daxes%5B1%2C%201%5D%2C%20title%3D%22Time%20Slice%20(100-200)%22%2C%20overlay%3DTrue)%0A%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20plt.show()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%F0%9F%94%8D%20%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AB%E3%82%88%E3%82%8B%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E9%81%B8%E6%8A%9E%0A%0A%20%20%20%20%E3%82%88%E3%82%8A%E9%AB%98%E5%BA%A6%E3%81%AA%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E9%81%B8%E6%8A%9E%E3%81%AB%E3%81%AF%60get_channel%60%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%60query%60%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%23%23%23%23%20%E3%81%AA%E3%81%9C%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%8B%0A%0A%20%20%20%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%8C%E5%A4%9A%E6%95%B0%E3%81%82%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81**%E6%9D%A1%E4%BB%B6%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%92%E9%81%B8%E6%8A%9E**%E3%81%97%E3%81%9F%E3%81%84%E3%81%93%E3%81%A8%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%EF%BC%9A%0A%20%20%20%20-%20%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%A9%E3%83%99%E3%83%AB%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%AB%E4%B8%80%E8%87%B4%E3%81%99%E3%82%8B%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%0A%20%20%20%20-%20%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E7%AF%84%E5%9B%B2%E3%81%AE%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%0A%20%20%20%20-%20%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%8F%E9%81%B8%E6%8A%9E%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(sensor_data)%3A%0A%20%20%20%20%23%20get_channel%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E4%BE%8B%0A%20%20%20%20import%20re%0A%0A%20%20%20%20print(%22%F0%9F%94%8D%20get_channel%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%E9%81%B8%E6%8A%9E%3A%22)%0A%0A%20%20%20%20%23%201.%20%E6%96%87%E5%AD%97%E5%88%97%E3%82%AF%E3%82%A8%E3%83%AA%EF%BC%88%E5%AE%8C%E5%85%A8%E4%B8%80%E8%87%B4%EF%BC%89%0A%20%20%20%20print(%22%5Cn1.%20%F0%9F%93%9D%20%E6%96%87%E5%AD%97%E5%88%97%E3%82%AF%E3%82%A8%E3%83%AA%EF%BC%88%E5%AE%8C%E5%85%A8%E4%B8%80%E8%87%B4%EF%BC%89%22)%0A%20%20%20%20selected_exact%20%3D%20sensor_data.get_channel(query%3D%22accel_x%22)%0A%20%20%20%20print(f%22%20%20query%3D'accel_x'%3A%20%7Bselected_exact.labels%7D%22)%0A%0A%20%20%20%20%23%202.%20%E9%83%A8%E5%88%86%E4%B8%80%E8%87%B4%E3%81%AE%E4%BE%8B%0A%20%20%20%20print(%22%5Cn2.%20%F0%9F%94%8D%20%E9%83%A8%E5%88%86%E4%B8%80%E8%87%B4%E3%81%AE%E4%BE%8B%22)%0A%20%20%20%20%23%20%E3%83%A9%E3%83%99%E3%83%AB%E3%81%AB'ccel'%E3%82%92%E5%90%AB%E3%82%80%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%92%E9%81%B8%E6%8A%9E%EF%BC%88%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%E3%81%A7%E9%83%A8%E5%88%86%E4%B8%80%E8%87%B4%EF%BC%89%0A%20%20%20%20selected_partial%20%3D%20sensor_data.get_channel(query%3Dre.compile(r%22.*ccel.*%22))%0A%20%20%20%20print(f%22%20%20query%3Dre.compile(r'.*ccel.*')%3A%20%7Bselected_partial.labels%7D%22)%0A%0A%20%20%20%20%23%203.%20%E9%96%A2%E6%95%B0%E3%82%AF%E3%82%A8%E3%83%AA%EF%BC%88%E8%BF%B0%E8%AA%9E%EF%BC%89%0A%20%20%20%20print(%22%5Cn3.%20%F0%9F%A7%AE%20%E9%96%A2%E6%95%B0%E3%82%AF%E3%82%A8%E3%83%AA%EF%BC%88%E8%BF%B0%E8%AA%9E%EF%BC%89%22)%0A%0A%20%20%20%20%23%20RMS%E5%80%A4%E3%81%8C0.5%E4%BB%A5%E4%B8%8A%E3%81%AE%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%92%E9%81%B8%E6%8A%9E%0A%20%20%20%20def%20high_energy_predicate(ch_metadata)%3A%0A%20%20%20%20%20%20%20%20%23%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%81%AE%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E5%8F%96%E5%BE%97%0A%20%20%20%20%20%20%20%20ch_idx%20%3D%20sensor_data.labels.index(ch_metadata.label)%0A%20%20%20%20%20%20%20%20return%20sensor_data.rms%5Bch_idx%5D%20%3E%200.5%0A%0A%20%20%20%20selected_predicate%20%3D%20sensor_data.get_channel(query%3Dhigh_energy_predicate)%0A%20%20%20%20print(f%22%20%20%E9%AB%98%E3%82%A8%E3%83%8D%E3%83%AB%E3%82%AE%E3%83%BC%E8%BF%B0%E8%AA%9E%3A%20%7Bselected_predicate.labels%7D%22)%0A%0A%20%20%20%20%23%204.%20%E8%BE%9E%E6%9B%B8%E3%82%AF%E3%82%A8%E3%83%AA%EF%BC%88%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%B1%9E%E6%80%A7%EF%BC%89%0A%20%20%20%20print(%22%5Cn4.%20%F0%9F%93%9A%20%E8%BE%9E%E6%9B%B8%E3%82%AF%E3%82%A8%E3%83%AA%EF%BC%88%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%B1%9E%E6%80%A7%EF%BC%89%22)%0A%20%20%20%20%23%20%E3%83%A9%E3%83%99%E3%83%AB%E3%81%8C%E7%89%B9%E5%AE%9A%E3%81%AE%E5%80%A4%E3%81%AB%E4%B8%80%E8%87%B4%E3%81%99%E3%82%8B%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%0A%20%20%20%20selected_dict%20%3D%20sensor_data.get_channel(query%3D%7B%22label%22%3A%20%22temperature%22%7D)%0A%20%20%20%20print(f%22%20%20query%3D%7B%7B'label'%3A%20'temperature'%7D%7D%3A%20%7Bselected_dict.labels%7D%22)%0A%0A%20%20%20%20%23%205.%20%E8%BE%9E%E6%9B%B8%E3%82%AF%E3%82%A8%E3%83%AA%EF%BC%88%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%EF%BC%89%0A%20%20%20%20print(%22%5Cn5.%20%F0%9F%94%97%20%E8%BE%9E%E6%9B%B8%E3%82%AF%E3%82%A8%E3%83%AA%EF%BC%88%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%EF%BC%89%22)%0A%20%20%20%20selected_dict_regex%20%3D%20sensor_data.get_channel(query%3D%7B%22label%22%3A%20re.compile(r%22accel_.*%22)%7D)%0A%20%20%20%20print(f%22%20%20query%3D%7B%7B'label'%3A%20re.compile(r'accel_.*')%7D%7D%3A%20%7Bselected_dict_regex.labels%7D%22)%0A%0A%20%20%20%20print(%22%5Cn%E2%9C%85%20get_channel%E3%82%AF%E3%82%A8%E3%83%AA%E9%81%B8%E6%8A%9E%E5%AE%8C%E4%BA%86%EF%BC%81%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20get_channel%E3%82%AF%E3%82%A8%E3%83%AA%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%0A%0A%20%20%20%20-%20**%E6%96%87%E5%AD%97%E5%88%97**%3A%20%60query%3D'label_name'%60%20-%20%E5%AE%8C%E5%85%A8%E4%B8%80%E8%87%B4%0A%20%20%20%20-%20**%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE**%3A%20%60query%3Dre.compile(r'pattern')%60%20-%20%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%83%9E%E3%83%83%E3%83%81%0A%20%20%20%20-%20**%E9%96%A2%E6%95%B0**%3A%20%60query%3Dlambda%20ch%3A%20condition%60%20-%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%9D%A1%E4%BB%B6%0A%20%20%20%20-%20**%E8%BE%9E%E6%9B%B8**%3A%20%60query%3D%7B'attr'%3A%20value%7D%60%20-%20%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%B1%9E%E6%80%A7%E4%B8%80%E8%87%B4%0A%20%20%20%20-%20**%E8%BE%9E%E6%9B%B8%2B%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE**%3A%20%60query%3D%7B'attr'%3A%20re.compile(r'pattern')%7D%60%20-%20%E9%AB%98%E5%BA%A6%E3%81%AA%E3%83%9E%E3%83%83%E3%83%81%0A%0A%20%20%20%20%60get_channel%60%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AF%E3%82%88%E3%82%8A%E6%9F%94%E8%BB%9F%E3%81%A7%E5%BC%B7%E5%8A%9B%E3%81%AA%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E9%81%B8%E6%8A%9E%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%23%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E9%81%B8%E6%8A%9E%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%0A%0A%20%20%20%20%23%23%23%23%20%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%96%B9%E6%B3%95%0A%20%20%20%20-%20**%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9**%3A%20%60data%5B%5B0%2C%202%5D%5D%60%20-%20%E4%BD%8D%E7%BD%AE%E3%81%AB%E3%82%88%E3%82%8B%E9%81%B8%E6%8A%9E%0A%20%20%20%20-%20**%E3%83%A9%E3%83%99%E3%83%AB**%3A%20%60data%5B%5B'ch1'%2C%20'ch2'%5D%5D%60%20-%20%E5%90%8D%E5%89%8D%E3%81%AB%E3%82%88%E3%82%8B%E9%81%B8%E6%8A%9E%0A%20%20%20%20-%20**%E3%82%B9%E3%83%A9%E3%82%A4%E3%82%B9**%3A%20%60data%5B1%3A3%5D%60%20-%20%E7%AF%84%E5%9B%B2%E9%81%B8%E6%8A%9E%0A%20%20%20%20-%20**%E5%8D%98%E4%B8%80**%3A%20%60data%5B'ch1'%5D%60%20-%201%E3%81%A4%E3%81%AE%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%0A%0A%20%20%20%20%23%23%23%23%20%E9%AB%98%E5%BA%A6%E3%81%AA%E9%81%B8%E6%8A%9E%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%0A%20%20%20%20-%20**%E6%9D%A1%E4%BB%B6**%3A%20%E3%83%AA%E3%82%B9%E3%83%88%E5%86%85%E5%8C%85%E8%A1%A8%E8%A8%98%E3%81%A7%E5%8B%95%E7%9A%84%E9%81%B8%E6%8A%9E%0A%20%20%20%20-%20**%E7%B5%B1%E8%A8%88%E6%83%85%E5%A0%B1**%3A%20RMS%E5%80%A4%E3%81%AA%E3%81%A9%E3%81%AE%E6%8C%87%E6%A8%99%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E9%81%B8%E6%8A%9E%0A%0A%20%20%20%20%23%23%23%23%20get_channel%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AE%E3%82%AF%E3%82%A8%E3%83%AA%0A%20%20%20%20-%20**%E6%96%87%E5%AD%97%E5%88%97**%3A%20%60query%3D'label_name'%60%20-%20%E5%AE%8C%E5%85%A8%E4%B8%80%E8%87%B4%0A%20%20%20%20-%20**%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE**%3A%20%60query%3Dre.compile(r'pattern')%60%20-%20%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%83%9E%E3%83%83%E3%83%81%0A%20%20%20%20-%20**%E9%96%A2%E6%95%B0**%3A%20%60query%3Dlambda%20ch%3A%20condition%60%20-%20%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%9D%A1%E4%BB%B6%0A%20%20%20%20-%20**%E8%BE%9E%E6%9B%B8**%3A%20%60query%3D%7B'attr'%3A%20value%7D%60%20-%20%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%B1%9E%E6%80%A7%E4%B8%80%E8%87%B4%0A%0A%20%20%20%20%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E6%96%B9%E6%B3%95%E3%82%92%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%80%81%E6%9F%94%E8%BB%9F%E3%81%AA%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%81%8C%E5%8F%AF%E8%83%BD%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%92%BE%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BF%9D%E5%AD%98%0A%0A%20%20%20%20%23%23%23%20%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A7%E3%81%AE%E4%BF%9D%E5%AD%98%0A%0A%20%20%20%20Wandas%E3%81%AF**%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E6%99%82%E3%81%A8%E5%90%8C%E3%81%98%E6%9F%94%E8%BB%9F%E6%80%A7**%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%EF%BC%9A%0A%20%20%20%20-%20**WAV**%3A%20%E9%9F%B3%E5%A3%B0%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A8%E3%81%97%E3%81%A6%E4%BF%9D%E5%AD%98%0A%20%20%20%20-%20**WDF**%3A%20Wandas%E5%B0%82%E7%94%A8%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%EF%BC%88%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%AE%8C%E5%85%A8%E4%BF%9D%E5%AD%98%EF%BC%89%0A%20%20%20%20-%20**NumPy**%3A%20%E9%AB%98%E9%80%9F%E5%87%A6%E7%90%86%E7%94%A8%0A%20%20%20%20-%20**CSV**%3A%20%E8%A1%A8%E8%A8%88%E7%AE%97%E3%82%BD%E3%83%95%E3%83%88%E7%94%A8%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(audio%2C%20np%2C%20pathlib_path%2C%20sensor_data%2C%20sf%2C%20stereo_audio%2C%20wd)%3A%0A%20%20%20%20%23%20%E5%87%A6%E7%90%86%E3%81%97%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BF%9D%E5%AD%98%0A%20%20%20%20output_dir%20%3D%20pathlib_path(%22output%22)%0A%20%20%20%20output_dir.mkdir(exist_ok%3DTrue)%0A%0A%20%20%20%20%23%20WAV%E5%BD%A2%E5%BC%8F%E3%81%A7%E4%BF%9D%E5%AD%98%0A%20%20%20%20wav_output%20%3D%20output_dir%20%2F%20%22processed_audio.wav%22%0A%20%20%20%20audio.to_wav(wav_output)%0A%20%20%20%20round_trip_audio%20%3D%20wd.read(wav_output)%0A%20%20%20%20wav_subtype%20%3D%20sf.info(wav_output).subtype%0A%20%20%20%20assert%20wav_subtype%20%3D%3D%20%22FLOAT%22%0A%20%20%20%20assert%20round_trip_audio.data.dtype%20%3D%3D%20np.float64%0A%20%20%20%20np.testing.assert_array_equal(round_trip_audio.data%2C%20audio.data)%0A%20%20%20%20print(f%22%E2%9C%85%20WAV%E4%BF%9D%E5%AD%98%3A%20%7Bwav_output%7D%20(subtype%3D%7Bwav_subtype%7D%2C%20dtype%3D%7Bround_trip_audio.data.dtype%7D)%22)%0A%20%20%20%20print(%22%20%20%20FLOAT%E7%AC%A6%E5%8F%B7%E5%8C%96%E3%81%A7full-scale%E5%80%A4%E3%82%92%E4%BF%9D%E3%81%A3%E3%81%9F%E3%81%BE%E3%81%BE%E5%86%8D%E8%AA%AD%E8%BE%BC%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%97%E3%81%9F%22)%0A%0A%20%20%20%20%23%20WDF%E5%BD%A2%E5%BC%8F%E3%81%A7%E4%BF%9D%E5%AD%98%EF%BC%88%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E5%AE%8C%E5%85%A8%E4%BF%9D%E5%AD%98%EF%BC%89%0A%20%20%20%20wdf_output%20%3D%20output_dir%20%2F%20%22sensor_data.wdf%22%0A%20%20%20%20sensor_data.trim(start%3D0%2C%20end%3D1).save(wdf_output%2C%20overwrite%3DTrue)%0A%20%20%20%20print(f%22%E2%9C%85%20WDF%E4%BF%9D%E5%AD%98%3A%20%7Bwdf_output%7D%22)%0A%0A%20%20%20%20%23%20NumPy%E5%BD%A2%E5%BC%8F%E3%81%A7%E4%BF%9D%E5%AD%98%0A%20%20%20%20np_output%20%3D%20output_dir%20%2F%20%22stereo_audio.npy%22%0A%20%20%20%20np.save(np_output%2C%20stereo_audio.data)%0A%20%20%20%20print(f%22%E2%9C%85%20NumPy%E4%BF%9D%E5%AD%98%3A%20%7Bnp_output%7D%22)%0A%0A%20%20%20%20%23%20CSV%E5%BD%A2%E5%BC%8F%E3%81%A7%E4%BF%9D%E5%AD%98%0A%20%20%20%20csv_output%20%3D%20output_dir%20%2F%20%22processed_sensors.csv%22%0A%20%20%20%20sensor_data.to_dataframe().to_csv(csv_output)%0A%20%20%20%20print(f%22%E2%9C%85%20CSV%E4%BF%9D%E5%AD%98%3A%20%7Bcsv_output%7D%22)%0A%20%20%20%20return%20csv_output%2C%20np_output%2C%20output_dir%2C%20wdf_output%0A%0A%0A%40app.cell%0Adef%20_(csv_output%2C%20np%2C%20np_output%2C%20stereo_audio%2C%20wd%2C%20wdf_output)%3A%0A%20%20%20%20%23%20%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%93%E3%81%A7%E7%A2%BA%E8%AA%8D%0A%20%20%20%20print(%22%F0%9F%94%84%20%E4%BF%9D%E5%AD%98%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E7%A2%BA%E8%AA%8D%3A%22)%0A%0A%20%20%20%20%23%20WDF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%20%20%20%20loaded_wdf%20%3D%20wd.ChannelFrame.load(wdf_output)%0A%20%20%20%20print(f%22%20%20WDF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%3A%20%7Bloaded_wdf.shape%7D%20-%20%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E4%BF%9D%E6%8C%81%3A%20%7Blen(loaded_wdf.operation_history)%7D%20operations%22)%0A%0A%20%20%20%20%23%20NumPy%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%20%20%20%20loaded_np%20%3D%20wd.from_numpy(%0A%20%20%20%20%20%20%20%20data%3Dnp.load(np_output)%2C%20sampling_rate%3Dstereo_audio.sampling_rate%2C%20ch_labels%3Dstereo_audio.labels%0A%20%20%20%20)%0A%20%20%20%20print(f%22%20%20NumPy%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%3A%20%7Bloaded_np.shape%7D%20-%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%3A%20%7Bloaded_np.sampling_rate%7D%20Hz%22)%0A%0A%20%20%20%20%23%20CSV%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%20%20%20%20loaded_csv%20%3D%20wd.read(csv_output%2C%20time_column%3D%22time%22)%0A%20%20%20%20print(f%22%20%20CSV%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%3A%20%7Bloaded_csv.shape%7D%20-%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%3A%20%7Bloaded_csv.labels%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%8E%AF%20%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E4%BE%8B%0A%0A%20%20%20%20%23%23%23%20%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%81%AE%E5%AE%8C%E5%85%A8%E3%81%AA%E4%BE%8B%0A%0A%20%20%20%20%E7%8F%BE%E5%AE%9F%E7%9A%84%E3%81%AA%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%82%92%E4%BD%93%E9%A8%93%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%E3%80%82%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(csv_path%2C%20output_dir%2C%20wd)%3A%0A%20%20%20%20%23%20%E5%AE%8C%E5%85%A8%E3%81%AA%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%3A%20%E3%83%87%E3%83%BC%E3%82%BF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%20%E2%86%92%20%E5%87%A6%E7%90%86%20%E2%86%92%20%E4%BF%9D%E5%AD%98%0A%20%20%20%20print(%22%F0%9F%9A%80%20%E5%AE%8C%E5%85%A8%E3%81%AA%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%3A%22)%0A%0A%20%20%20%20%23%201.%20%E3%83%87%E3%83%BC%E3%82%BF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%20%20%20%20print(%221.%20%F0%9F%93%82%20%E3%83%87%E3%83%BC%E3%82%BF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%22)%0A%20%20%20%20data%20%3D%20wd.read(csv_path%2C%20time_column%3D%22time%22)%0A%20%20%20%20print(f%22%20%20%20%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E5%AE%8C%E4%BA%86%3A%20%7Bdata.shape%7D%22)%0A%0A%20%20%20%20%23%202.%20%E5%89%8D%E5%87%A6%E7%90%86%0A%20%20%20%20print(%222.%20%F0%9F%94%A7%20%E5%89%8D%E5%87%A6%E7%90%86%22)%0A%20%20%20%20processed%20%3D%20(%0A%20%20%20%20%20%20%20%20data.high_pass_filter(cutoff%3D0.5)%20%20%23%20%E7%9B%B4%E6%B5%81%E6%88%90%E5%88%86%E9%99%A4%E5%8E%BB%0A%20%20%20%20%20%20%20%20.low_pass_filter(cutoff%3D10)%20%20%23%20%E9%AB%98%E5%91%A8%E6%B3%A2%E3%83%8E%E3%82%A4%E3%82%BA%E9%99%A4%E5%8E%BB%0A%20%20%20%20%20%20%20%20.normalize()%20%20%23%20%E6%AD%A3%E8%A6%8F%E5%8C%96%0A%20%20%20%20)%0A%20%20%20%20print(f%22%20%20%20%E5%87%A6%E7%90%86%E5%AE%8C%E4%BA%86%3A%20%7Blen(processed.operation_history)%7D%20operations%22)%0A%0A%20%20%20%20%23%203.%20%E7%89%B9%E5%BE%B4%E6%8A%BD%E5%87%BA%0A%20%20%20%20print(%223.%20%F0%9F%93%8A%20%E7%89%B9%E5%BE%B4%E6%8A%BD%E5%87%BA%22)%0A%20%20%20%20features%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22rms%22%3A%20processed.rms%2C%0A%20%20%20%20%20%20%20%20%22peak%22%3A%20processed.abs().data.max()%2C%0A%20%20%20%20%20%20%20%20%22crest_factor%22%3A%20processed.abs().data.max(-1)%20%2F%20processed.rms%2C%0A%20%20%20%20%7D%0A%20%20%20%20print(f%22%20%20%20RMS%3A%20%7Bdict(zip(processed.labels%2C%20features%5B'rms'%5D))%7D%22)%0A%0A%20%20%20%20%23%204.%20%E5%8F%AF%E8%A6%96%E5%8C%96%0A%20%20%20%20print(%224.%20%F0%9F%93%88%20%E5%8F%AF%E8%A6%96%E5%8C%96%22)%0A%20%20%20%20processed.describe()%0A%0A%20%20%20%20%23%205.%20%E4%BF%9D%E5%AD%98%0A%20%20%20%20print(%225.%20%F0%9F%92%BE%20%E4%BF%9D%E5%AD%98%22)%0A%20%20%20%20final_output%20%3D%20output_dir%20%2F%20%22analyzed_sensor_data.wdf%22%0A%20%20%20%20processed.save(final_output%2C%20overwrite%3DTrue)%0A%20%20%20%20print(f%22%20%20%20%E4%BF%9D%E5%AD%98%E5%AE%8C%E4%BA%86%3A%20%7Bfinal_output%7D%22)%0A%0A%20%20%20%20print(%22%5Cn%E2%9C%85%20%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E5%AE%8C%E4%BA%86%EF%BC%81%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%9B%A0%EF%B8%8F%20%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%0A%0A%20%20%20%20%23%23%23%20%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E5%95%8F%E9%A1%8C%E3%81%A8%E8%A7%A3%E6%B1%BA%E6%B3%95%0A%0A%20%20%20%20%23%23%23%23%201.%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%82%A8%E3%83%A9%E3%83%BC%0A%20%20%20%20-%20**%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%99%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D**%3A%20%60Path(file).exists()%60%0A%20%20%20%20-%20**%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%84%E3%81%8B%E7%A2%BA%E8%AA%8D**%3A%20%60file.suffix%60%0A%20%20%20%20-%20**%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E5%95%8F%E9%A1%8C**%3A%20CSV%E3%81%AE%E5%A0%B4%E5%90%88%20%60encoding%3D'utf-8'%60%20%E3%82%92%E6%8C%87%E5%AE%9A%0A%0A%20%20%20%20%23%23%23%23%202.%20%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE%E5%95%8F%E9%A1%8C%0A%20%20%20%20-%20**WAV%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%81%8B%E3%82%89%E5%8F%96%E5%BE%97**%3A%20%60wd.read(file)%60%20%E3%81%AF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E8%A8%98%E9%8C%B2%E3%81%95%E3%82%8C%E3%81%9F%E5%80%A4%E3%82%92%E4%BD%BF%E3%81%86%0A%20%20%20%20-%20**%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88**%3A%20%E8%AA%AD%E8%BE%BC%E5%BE%8C%E3%81%AB%20%60data.resampling(target_sr%3D44100)%60%20%E3%82%92%E9%81%A9%E7%94%A8%0A%0A%20%20%20%20%23%23%23%23%203.%20%E3%83%A1%E3%83%A2%E3%83%AA%E4%B8%8D%E8%B6%B3%0A%20%20%20%20-%20**%E3%83%81%E3%83%A3%E3%83%B3%E3%82%AF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF**%3A%20%E5%A4%A7%E3%81%8D%E3%81%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%88%86%E5%89%B2%E3%81%97%E3%81%A6%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%20%20%20%20-%20**%E3%83%80%E3%82%A6%E3%83%B3%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AA%E3%83%B3%E3%82%B0**%3A%20%60data.resampling(target_sr%3D22050)%60%0A%0A%20%20%20%20%23%23%23%23%204.%20%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E5%90%8D%E3%81%AE%E4%B8%8D%E4%B8%80%E8%87%B4%0A%20%20%20%20-%20**%E6%98%8E%E7%A4%BA%E7%9A%84%E3%81%AB%E6%8C%87%E5%AE%9A**%3A%20%60ch_labels%3D%5B'ch1'%2C%20'ch2'%2C%20'ch3'%5D%60%0A%20%20%20%20-%20**%E8%87%AA%E5%8B%95%E7%94%9F%E6%88%90**%3A%20%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%20%60Channel%200%60%2C%20%60Channel%201%60...%20%E3%81%A8%E3%81%AA%E3%82%8B%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20%F0%9F%93%9A%20%E6%AC%A1%E3%81%AE%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%0A%0A%20%20%20%20%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%A8%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%EF%BC%81%0A%0A%20%20%20%20**%E6%AC%A1%E3%81%AEmarimo%E3%82%A2%E3%83%97%E3%83%AA**%3A%20%5B03_signal_processing_basics.py%5D(03_signal_processing_basics.py)%0A%0A%20%20%20%20%E3%81%93%E3%81%93%E3%81%A7%E3%81%AF%E3%80%81%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%93%E3%81%A0%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92**%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0**%E3%82%84**%E5%91%A8%E6%B3%A2%E6%95%B0%E5%88%86%E6%9E%90**%E3%81%AA%E3%81%A9%E3%81%AE%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF%E3%81%A7%E5%8A%A0%E5%B7%A5%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%82%92%E7%B4%B9%E4%BB%8B%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%0A%0A%20%20%20%20%23%23%23%20%F0%9F%8E%AF%20%E3%81%93%E3%82%8C%E3%81%BE%E3%81%A7%E3%81%AB%E5%AD%A6%E3%82%93%E3%81%A0%E3%81%93%E3%81%A8%0A%20%20%20%20-%20%E2%9C%85%20%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%BD%A2%E5%BC%8F%EF%BC%88WAV%2C%20CSV%2C%20NumPy%EF%BC%89%E3%81%8B%E3%82%89%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BF%0A%20%20%20%20-%20%E2%9C%85%20ChannelFrame%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0%E3%81%AE%E7%90%86%E8%A7%A3%0A%20%20%20%20-%20%E2%9C%85%20pandas%E3%83%A9%E3%82%A4%E3%82%AF%E3%81%AA%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%96%B9%E6%B3%95%0A%20%20%20%20-%20%E2%9C%85%20%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E7%AE%A1%E7%90%86%E3%81%A8%E5%87%A6%E7%90%86%E5%B1%A5%E6%AD%B4%0A%20%20%20%20-%20%E2%9C%85%20%E8%A4%87%E6%95%B0%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%83%E3%83%88%E3%81%A7%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E4%BF%9D%E5%AD%98%0A%20%20%20%20-%20%E2%9C%85%20%E5%AE%8C%E5%85%A8%E3%81%AA%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E5%AE%9F%E8%B7%B5%0A%0A%20%20%20%20%23%23%23%20%F0%9F%9A%80%20%E6%AC%A1%E3%81%AE%E5%AD%A6%E7%BF%92%E7%9B%AE%E6%A8%99%0A%20%20%20%20-%20FFT%E3%81%AB%E3%82%88%E3%82%8B%E5%91%A8%E6%B3%A2%E6%95%B0%E9%A0%98%E5%9F%9F%E5%A4%89%E6%8F%9B%0A%20%20%20%20-%20%E3%83%AD%E3%83%BC%E3%83%91%E3%82%B9%2F%E3%83%8F%E3%82%A4%E3%83%91%E3%82%B9%2F%E3%83%90%E3%83%B3%E3%83%89%E3%83%91%E3%82%B9%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%0A%20%20%20%20-%20%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E3%83%AB%E5%88%86%E6%9E%90%0A%20%20%20%20-%20%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E8%A8%AD%E8%A8%88%E3%81%AE%E5%9F%BA%E7%A4%8E%0A%0A%20%20%20%20---%0A%0A%20%20%20%20**%E3%83%87%E3%83%BC%E3%82%BF%E6%93%8D%E4%BD%9C%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%82%92%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%91%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E6%AC%A1%E3%81%AE%E4%BF%A1%E5%8F%B7%E5%87%A6%E7%90%86%E3%81%AE%E4%B8%96%E7%95%8C%E3%81%B8%EF%BC%81**%20%F0%9F%8E%B5%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
751261cc8f8e76e123d6523b5341bb45