Skip to content

Commit

Permalink
Experimental PH-TESS notebook
Browse files Browse the repository at this point in the history
A modification of the 1D sonification notebook. It replaces the generated 1D data with a couple of simulated TESS light curves from Planet Hunters TESS.
  • Loading branch information
eatyourgreens committed Dec 19, 2023
1 parent e512f39 commit ec235ea
Showing 1 changed file with 273 additions and 0 deletions.
273 changes: 273 additions & 0 deletions examples/SonifyingDataTESS.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,273 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "03b73a45",
"metadata": {},
"source": [
"## <u> Demonstrate some generic techniques for sonifying 1D data:</u>"
]
},
{
"cell_type": "markdown",
"id": "37f21355",
"metadata": {},
"source": [
"**First, import relevant modules:**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f64e736a",
"metadata": {},
"outputs": [],
"source": [
"%reload_ext autoreload \n",
"%autoreload 2\n",
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"from strauss.sonification import Sonification\n",
"from strauss.sources import Objects\n",
"from strauss import channels\n",
"from strauss.score import Score\n",
"from strauss.generator import Synthesizer\n",
"import IPython.display as ipd\n",
"import os\n",
"from scipy.interpolate import interp1d\n",
"import numpy as np\n",
"import requests\n",
"import json"
]
},
{
"cell_type": "markdown",
"id": "c4a3e9c2-e9e3-48ca-a21c-0ae64bb549f6",
"metadata": {},
"source": [
"**Now, we load some test data!**\n",
"\n",
"We use a simulated subject from the PH-TESS dataset (subject 94880899 or subject 94880882):"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "fbf7b1b5-79b7-4a2a-a8e9-15f196a15ca6",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"s94880899 = 'https://panoptes-uploads.zooniverse.org/subject_location/03caefe6-7d48-4225-9cc0-e5a60f337af8.txt'\n",
"s94880882 = 'https://panoptes-uploads.zooniverse.org/subject_location/7578bd5d-b8da-4c42-8da7-5f897ded018e.txt'\n",
"response = json.loads(requests.get(s94880882).text)\n",
"days = np.array(response['x'])\n",
"normalised_days = lambda d: d / days.max()\n",
"x = np.array(list(map(normalised_days, days)))\n",
"normalised_flux = map(lambda f: f + 0.5,response['y'])\n",
"y = np.array(list(normalised_flux))\n",
"\n",
"\n",
"plt.plot(x,y)\n",
"plt.ylabel('Normalised flux')\n",
"plt.xlabel('Days')"
]
},
{
"cell_type": "markdown",
"id": "d0f6edf6-59bf-4bdc-a9e7-c7f097cd08d3",
"metadata": {},
"source": [
"**Set up some universal sonification parameters and classes for the examples below**\n",
"\n",
"For all examples we use the `Synthesizer` generator to create a 30 second, mono sonification."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "009d6c9a-fb4c-4cd9-a87d-ccae4f280d89",
"metadata": {},
"outputs": [],
"source": [
"# specify audio system (e.g. mono, stereo, 5.1, ...)\n",
"system = \"stereo\"\n",
"\n",
"# length of the sonification in s\n",
"length = 15.\n",
"\n",
"# set up synth and turn on LP filter\n",
"generator = Synthesizer()\n",
"generator.load_preset('pitch_mapper')\n",
"generator.preset_details('pitch_mapper')"
]
},
{
"cell_type": "markdown",
"id": "b7a7b7ed-6da8-4694-8aef-df00a7277d42",
"metadata": {},
"source": [
"### <u>Example 1</u> &nbsp; **Pitch Mapping**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7c92480b-345a-4212-883c-b9eded4060d5",
"metadata": {},
"outputs": [],
"source": [
"notes = [[\"A2\"]]\n",
"score = Score(notes, length)\n",
"\n",
"data = {'pitch':1.,\n",
" 'time_evo':x,\n",
" 'azimuth':(x*0.5+0.25) % 1,\n",
" 'polar':0.5,\n",
" 'pitch_shift':y**0.7}\n",
"\n",
"# set up source\n",
"sources = Objects(data.keys())\n",
"sources.fromdict(data)\n",
"sources.apply_mapping_functions()\n",
"\n",
"soni = Sonification(score, sources, generator, system)\n",
"soni.render()\n",
"soni.notebook_display()"
]
},
{
"cell_type": "markdown",
"id": "285b12a8-ef64-49f9-a851-b011bde05e29",
"metadata": {},
"source": [
"### <u>Example 2</u> &nbsp; **Volume Mapping**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7bed74fc-a506-47d7-aff1-0ea6e200bd8a",
"metadata": {},
"outputs": [],
"source": [
"notes = [[\"A2\"]]\n",
"score = Score(notes, length)\n",
"\n",
"data = {'pitch':1.,\n",
" 'time_evo':x,\n",
" 'azimuth':(x*0.5+0.25) % 1,\n",
" 'polar':0.5,\n",
" 'volume':y**0.7}\n",
"\n",
"# set up source\n",
"sources = Objects(data.keys())\n",
"sources.fromdict(data)\n",
"sources.apply_mapping_functions()\n",
"\n",
"soni = Sonification(score, sources, generator, system)\n",
"soni.render()\n",
"soni.notebook_display()"
]
},
{
"cell_type": "markdown",
"id": "25f17dd1-fe8c-4b61-8a15-4a3cedb646b4",
"metadata": {},
"source": [
"### <u>Example 3</u> &nbsp; **Filter Cutoff Mapping**"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a1efde9b-c4c9-4c0f-b4c5-9d32a2098fb1",
"metadata": {},
"outputs": [],
"source": [
"generator = Synthesizer()\n",
"generator.modify_preset({'filter':'on'})"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a583f3bd-b57b-4448-8cf2-d30de234a3bd",
"metadata": {},
"outputs": [],
"source": [
"notes = [[\"C2\",\"G2\",\"C3\",\"G3\"]]\n",
"score = Score(notes, length)\n",
"\n",
"data = {'pitch':[0,1,2,3],\n",
" 'time_evo':[x]*4,\n",
" 'azimuth':[(x*0.5+0.25) % 1]*4,\n",
" 'polar':[0.5]*4,\n",
" 'cutoff':[y**0.8]*4}\n",
"\n",
"# set up source\n",
"sources = Objects(data.keys())\n",
"sources.fromdict(data)\n",
"sources.apply_mapping_functions()\n",
"\n",
"soni = Sonification(score, sources, generator, system)\n",
"soni.render()\n",
"soni.notebook_display()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "17785113-03f2-4f3a-824c-9c3d93ed1530",
"metadata": {},
"outputs": [],
"source": [
"generator = Synthesizer()\n",
"generator.load_preset('windy')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d001083d-e5d8-4308-bcc2-f775d963395a",
"metadata": {},
"outputs": [],
"source": [
"data = {'pitch':[0,1,2,3],\n",
" 'time_evo':[x],\n",
" 'azimuth':[(x*0.5+0.25) % 1],\n",
" 'polar':[0.5],\n",
" 'cutoff':[y**0.8]}\n",
"sources = Objects(data.keys())\n",
"sources.fromdict(data)\n",
"sources.apply_mapping_functions()\n",
"\n",
"soni = Sonification(score, sources, generator, system)\n",
"soni.render()\n",
"soni.notebook_display()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

0 comments on commit ec235ea

Please sign in to comment.