{
  "id": 583118,
  "title": "Helios Data Visualizer",
  "url": "/competitions/cmi-detect-behavior-with-sensor-data/discussion/583118",
  "author_name": "Florian CMI",
  "post_date": "2025-06-04T21:04:44.836000",
  "votes": 89,
  "comment_count": 19,
  "views": 0,
  "content": "<p><a href=\"https://github.com/childmindresearch/helios-render-kaggle\" target=\"_blank\">We built a tool to render the sensor data as 3D animations</a>. Thought it might be useful for exploring the dataset or just fun to see the gestures in action.</p>\n<p>What it does:</p>\n<ul>\n<li>Renders 3D arm movement based on IMU quaternion data</li>\n<li>Shows live ToF sensor heatmaps (all 5 sensors as 8x8 grids)</li>\n<li>Displays thermopile temperature readings</li>\n<li>Exports videos</li>\n</ul>\n<h2>Usage:</h2>\n<pre><code>python helios_render.py --csv train.csv --subject SUBJ_032761 --gesture \n</code></pre>\n\n<p>You can filter by subject, gesture, behavior, phase, etc. The tool handles multiple sequences and has caching for faster re-runs.</p>\n<p>Requirements: Python 3.9+, PyVista, FFmpeg, and the arm.obj mesh file from the repo. (See <code>requirements.txt</code>)</p>\n<p>Code can be found <a href=\"https://github.com/childmindresearch/helios-render-kaggle\" target=\"_blank\">here</a>. Feel free to use it, modify it, or extend it any way you like!</p>",
  "messages": [
    {
      "id": 3217317,
      "postDate": "2025-06-04T21:04:44.837Z",
      "content": "<p><a href=\"https://github.com/childmindresearch/helios-render-kaggle\" target=\"_blank\">We built a tool to render the sensor data as 3D animations</a>. Thought it might be useful for exploring the dataset or just fun to see the gestures in action.</p>\n<p>What it does:</p>\n<ul>\n<li>Renders 3D arm movement based on IMU quaternion data</li>\n<li>Shows live ToF sensor heatmaps (all 5 sensors as 8x8 grids)</li>\n<li>Displays thermopile temperature readings</li>\n<li>Exports videos</li>\n</ul>\n<h2>Usage:</h2>\n<pre><code>python helios_render.py --csv train.csv --subject SUBJ_032761 --gesture \n</code></pre>\n\n<p>You can filter by subject, gesture, behavior, phase, etc. The tool handles multiple sequences and has caching for faster re-runs.</p>\n<p>Requirements: Python 3.9+, PyVista, FFmpeg, and the arm.obj mesh file from the repo. (See <code>requirements.txt</code>)</p>\n<p>Code can be found <a href=\"https://github.com/childmindresearch/helios-render-kaggle\" target=\"_blank\">here</a>. Feel free to use it, modify it, or extend it any way you like!</p>",
      "rawMarkdown": "[We built a tool to render the sensor data as 3D animations](https://github.com/childmindresearch/helios-render-kaggle). Thought it might be useful for exploring the dataset or just fun to see the gestures in action.\n\nWhat it does:\n\n- Renders 3D arm movement based on IMU quaternion data\n- Shows live ToF sensor heatmaps (all 5 sensors as 8x8 grids)\n- Displays thermopile temperature readings\n- Exports videos\n\n## Usage:\n\n```bash\npython helios_render.py --csv train.csv --subject SUBJ_032761 --gesture \"Wave hello\"\n```\n\n![](https://www.youtube.com/watch?v=UgHp7ph_c3E)\n\nYou can filter by subject, gesture, behavior, phase, etc. The tool handles multiple sequences and has caching for faster re-runs.\n\nRequirements: Python 3.9+, PyVista, FFmpeg, and the arm.obj mesh file from the repo. (See `requirements.txt`)\n\nCode can be found [here](https://github.com/childmindresearch/helios-render-kaggle). Feel free to use it, modify it, or extend it any way you like!",
      "votes": 86
    },
    {
      "id": 3218558,
      "postDate": "2025-06-06T11:09:45.913Z",
      "content": "<p><a href=\"https://www.kaggle.com/floriancmi\" target=\"_blank\">@floriancmi</a> I found a bug in the visualization code.</p>\n<p>The code is loading quaternions in <strong>scalar-first</strong> order <code>[w, x, y, z]</code>, but <code>scipy.spatial.transform.Rotation.from_quat()</code> expects <strong>scalar-last</strong> order <code>[x, y, z, w]</code> by default. This causes inconsistent or incorrect rotation behavior.</p>\n<pre><code>        quat = [(row[col])  col  [, , , ]]\n</code></pre>\n<pre><code>    rot = R.from_quat(frame_data[])\n</code></pre>\n<p><a href=\"https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.from_quat.html#scipy.spatial.transform.Rotation.from_quat\" target=\"_blank\">https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.from_quat.html#scipy.spatial.transform.Rotation.from_quat</a></p>",
      "rawMarkdown": "@floriancmi I found a bug in the visualization code.\n\nThe code is loading quaternions in **scalar-first** order `[w, x, y, z]`, but `scipy.spatial.transform.Rotation.from_quat()` expects **scalar-last** order `[x, y, z, w]` by default. This causes inconsistent or incorrect rotation behavior.\n\n```python\n        quat = [float(row[col]) for col in [\"rot_w\", \"rot_x\", \"rot_y\", \"rot_z\"]]\n```\n\n```python\n    rot = R.from_quat(frame_data[\"quat\"])\n```\n\nhttps://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.from_quat.html#scipy.spatial.transform.Rotation.from_quat",
      "votes": 9,
      "replies": [
        {
          "id": 3218739,
          "postDate": "2025-06-06T16:35:13.917Z",
          "content": "<p><a href=\"https://www.kaggle.com/floriancmi\" target=\"_blank\">@floriancmi</a> I think I fixed the bug. If you find some issue, please let me know. The fixed code is included in the notebook linked in the following discussion:<br>\n<a href=\"https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/583413\" target=\"_blank\">https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/583413</a></p>",
          "rawMarkdown": "@floriancmi I think I fixed the bug. If you find some issue, please let me know. The fixed code is included in the notebook linked in the following discussion:\nhttps://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/583413",
          "votes": 4
        },
        {
          "id": 3218815,
          "postDate": "2025-06-06T18:40:45.077Z",
          "content": "<p>Classic mistake! Thanks for catching this, should be fixed now.</p>",
          "rawMarkdown": "Classic mistake! Thanks for catching this, should be fixed now.",
          "votes": 1
        },
        {
          "id": 3231773,
          "postDate": "2025-06-24T22:21:30.710Z",
          "content": "<p>Thanks for it :)</p>",
          "rawMarkdown": "Thanks for it :)",
          "votes": 2
        }
      ]
    },
    {
      "id": 3219538,
      "postDate": "2025-06-07T22:44:50.480Z",
      "content": "<p>This is fantastic, thank you. I noticed the default framerate is 10, is this the sample rate for the sensor data? <br>\nSome <a href=\"https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/582463\" target=\"_blank\">💬other</a> <a href=\"https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/582475\" target=\"_blank\">💬participants</a> have been asking about the sampling rate as well.</p>",
      "rawMarkdown": "This is fantastic, thank you. I noticed the default framerate is 10, is this the sample rate for the sensor data? \nSome [💬other](https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/582463) [💬participants](https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/582475) have been asking about the sampling rate as well.\n",
      "votes": 3
    },
    {
      "id": 3242506,
      "postDate": "2025-07-06T02:04:57.080Z",
      "content": "<p>So interesting ! </p>",
      "rawMarkdown": "So interesting ! ",
      "votes": -1
    },
    {
      "id": 3239318,
      "postDate": "2025-07-02T17:30:00.243Z",
      "content": "<p>Nice work keep it up</p>",
      "rawMarkdown": "Nice work keep it up",
      "votes": -2
    },
    {
      "id": 3270963,
      "postDate": "2025-08-17T17:19:52.160Z",
      "content": "<p>I made a new visualization that can visualize hands and finger movements from IMU data. Let me know what you guys think!<br>\n<a href=\"https://github.com/fafa92/ArcaneHand\" target=\"_blank\">https://github.com/fafa92/ArcaneHand</a></p>",
      "rawMarkdown": "I made a new visualization that can visualize hands and finger movements from IMU data. Let me know what you guys think!\nhttps://github.com/fafa92/ArcaneHand"
    },
    {
      "id": 3249379,
      "postDate": "2025-07-16T10:56:23.560Z",
      "content": "<p>Hey, <a href=\"https://www.kaggle.com/floriancmi\" target=\"_blank\">@floriancmi</a>! Could someone please tell us the sample rate of the sensors so we don't guess/speculate?</p>",
      "rawMarkdown": "Hey, @floriancmi! Could someone please tell us the sample rate of the sensors so we don't guess/speculate?"
    },
    {
      "id": 3235202,
      "postDate": "2025-06-28T21:37:21.777Z",
      "content": "<p>Very nice one!</p>",
      "rawMarkdown": "Very nice one!"
    },
    {
      "id": 3222371,
      "postDate": "2025-06-12T06:56:15.250Z",
      "content": "<p>Hey, the video is good. Is it you have simulated using unity?</p>",
      "rawMarkdown": "Hey, the video is good. Is it you have simulated using unity?",
      "replies": [
        {
          "id": 3223856,
          "postDate": "2025-06-14T02:10:02.597Z",
          "content": "<p>Thank you! While this script (full source code linked above) does not use it, a Unity implementation would be quite fun (and possibly easier)!</p>",
          "rawMarkdown": "Thank you! While this script (full source code linked above) does not use it, a Unity implementation would be quite fun (and possibly easier)!"
        }
      ]
    },
    {
      "id": 3217404,
      "postDate": "2025-06-05T01:50:26.740Z",
      "content": "<p><a href=\"https://www.kaggle.com/floriancmi\" target=\"_blank\">@floriancmi</a> , wow seems very useful, thanks for sharing~!</p>",
      "rawMarkdown": "@floriancmi , wow seems very useful, thanks for sharing~!\n"
    },
    {
      "id": 3218206,
      "postDate": "2025-06-06T01:18:55.460Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 3271112,
      "postDate": "2025-08-18T05:24:38.187Z",
      "content": "<p>Thank you for sharing</p>",
      "rawMarkdown": "Thank you for sharing"
    },
    {
      "id": 3271110,
      "postDate": "2025-08-18T04:53:24.503Z",
      "content": "<p>Thank you for sharing,beginner-friendly</p>",
      "rawMarkdown": "Thank you for sharing,beginner-friendly"
    },
    {
      "id": 3270972,
      "postDate": "2025-08-17T18:07:25.660Z",
      "content": "<p>Super interesting! Thank you!</p>",
      "rawMarkdown": "Super interesting! Thank you!"
    },
    {
      "id": 3222994,
      "postDate": "2025-06-12T18:26:46.287Z",
      "content": "<p>wow, thanks for sharing</p>",
      "rawMarkdown": "wow, thanks for sharing"
    },
    {
      "id": 3222417,
      "postDate": "2025-06-12T07:30:05.303Z",
      "content": "<p>great work</p>",
      "rawMarkdown": "great work"
    }
  ],
  "comments": [
    {
      "id": 3218558,
      "author_name": "Bilzard",
      "author_url": "",
      "post_date": "2025-06-06T11:09:45.913000",
      "content": "<p><a href=\"https://www.kaggle.com/floriancmi\" target=\"_blank\">@floriancmi</a> I found a bug in the visualization code.</p>\n<p>The code is loading quaternions in <strong>scalar-first</strong> order <code>[w, x, y, z]</code>, but <code>scipy.spatial.transform.Rotation.from_quat()</code> expects <strong>scalar-last</strong> order <code>[x, y, z, w]</code> by default. This causes inconsistent or incorrect rotation behavior.</p>\n<pre><code>        quat = [(row[col])  col  [, , , ]]\n</code></pre>\n<pre><code>    rot = R.from_quat(frame_data[])\n</code></pre>\n<p><a href=\"https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.from_quat.html#scipy.spatial.transform.Rotation.from_quat\" target=\"_blank\">https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.from_quat.html#scipy.spatial.transform.Rotation.from_quat</a></p>",
      "votes": 9,
      "replies": [
        {
          "id": 3218739,
          "author_name": "Bilzard",
          "author_url": "",
          "post_date": "2025-06-06T16:35:13.917000",
          "content": "<p><a href=\"https://www.kaggle.com/floriancmi\" target=\"_blank\">@floriancmi</a> I think I fixed the bug. If you find some issue, please let me know. The fixed code is included in the notebook linked in the following discussion:<br>\n<a href=\"https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/583413\" target=\"_blank\">https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/583413</a></p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 3218815,
          "author_name": "Florian CMI",
          "author_url": "",
          "post_date": "2025-06-06T18:40:45.077000",
          "content": "<p>Classic mistake! Thanks for catching this, should be fixed now.</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 3231773,
          "author_name": "Anubhav Lakra",
          "author_url": "",
          "post_date": "2025-06-24T22:21:30.710000",
          "content": "<p>Thanks for it :)</p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 3219538,
      "author_name": "Peter Moorhouse",
      "author_url": "",
      "post_date": "2025-06-07T22:44:50.480000",
      "content": "<p>This is fantastic, thank you. I noticed the default framerate is 10, is this the sample rate for the sensor data? <br>\nSome <a href=\"https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/582463\" target=\"_blank\">💬other</a> <a href=\"https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/582475\" target=\"_blank\">💬participants</a> have been asking about the sampling rate as well.</p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 3242506,
      "author_name": "EarlHrk",
      "author_url": "",
      "post_date": "2025-07-06T02:04:57.080000",
      "content": "<p>So interesting ! </p>",
      "votes": -1,
      "replies": []
    },
    {
      "id": 3239318,
      "author_name": "Sabreen Elkamash",
      "author_url": "",
      "post_date": "2025-07-02T17:30:00.243000",
      "content": "<p>Nice work keep it up</p>",
      "votes": -2,
      "replies": []
    },
    {
      "id": 3270963,
      "author_name": "GoMBap",
      "author_url": "",
      "post_date": "2025-08-17T17:19:52.160000",
      "content": "<p>I made a new visualization that can visualize hands and finger movements from IMU data. Let me know what you guys think!<br>\n<a href=\"https://github.com/fafa92/ArcaneHand\" target=\"_blank\">https://github.com/fafa92/ArcaneHand</a></p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3249379,
      "author_name": "Карчмит Илья",
      "author_url": "",
      "post_date": "2025-07-16T10:56:23.560000",
      "content": "<p>Hey, <a href=\"https://www.kaggle.com/floriancmi\" target=\"_blank\">@floriancmi</a>! Could someone please tell us the sample rate of the sensors so we don't guess/speculate?</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3235202,
      "author_name": "Aleksander",
      "author_url": "",
      "post_date": "2025-06-28T21:37:21.777000",
      "content": "<p>Very nice one!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3222371,
      "author_name": "Ashmita Chakraborty_21",
      "author_url": "",
      "post_date": "2025-06-12T06:56:15.250000",
      "content": "<p>Hey, the video is good. Is it you have simulated using unity?</p>",
      "votes": 0,
      "replies": [
        {
          "id": 3223856,
          "author_name": "Florian CMI",
          "author_url": "",
          "post_date": "2025-06-14T02:10:02.597000",
          "content": "<p>Thank you! While this script (full source code linked above) does not use it, a Unity implementation would be quite fun (and possibly easier)!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3217404,
      "author_name": "Chris_Shen",
      "author_url": "",
      "post_date": "2025-06-05T01:50:26.740000",
      "content": "<p><a href=\"https://www.kaggle.com/floriancmi\" target=\"_blank\">@floriancmi</a> , wow seems very useful, thanks for sharing~!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3218206,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-06-06T01:18:55.460000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3271112,
      "author_name": "Sean Xu123",
      "author_url": "",
      "post_date": "2025-08-18T05:24:38.187000",
      "content": "<p>Thank you for sharing</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3271110,
      "author_name": "Sean Xu123",
      "author_url": "",
      "post_date": "2025-08-18T04:53:24.503000",
      "content": "<p>Thank you for sharing,beginner-friendly</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3270972,
      "author_name": "ABDELHAK OUANZOUGUI",
      "author_url": "",
      "post_date": "2025-08-17T18:07:25.660000",
      "content": "<p>Super interesting! Thank you!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3222994,
      "author_name": "Mawra Musawar",
      "author_url": "",
      "post_date": "2025-06-12T18:26:46.287000",
      "content": "<p>wow, thanks for sharing</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3222417,
      "author_name": "kulcha singh",
      "author_url": "",
      "post_date": "2025-06-12T07:30:05.303000",
      "content": "<p>great work</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "3217317": "[We built a tool to render the sensor data as 3D animations](https://github.com/childmindresearch/helios-render-kaggle). Thought it might be useful for exploring the dataset or just fun to see the gestures in action.\n\nWhat it does:\n\n- Renders 3D arm movement based on IMU quaternion data\n- Shows live ToF sensor heatmaps (all 5 sensors as 8x8 grids)\n- Displays thermopile temperature readings\n- Exports videos\n\n## Usage:\n\n```bash\npython helios_render.py --csv train.csv --subject SUBJ_032761 --gesture \"Wave hello\"\n```\n\n![](https://www.youtube.com/watch?v=UgHp7ph_c3E)\n\nYou can filter by subject, gesture, behavior, phase, etc. The tool handles multiple sequences and has caching for faster re-runs.\n\nRequirements: Python 3.9+, PyVista, FFmpeg, and the arm.obj mesh file from the repo. (See `requirements.txt`)\n\nCode can be found [here](https://github.com/childmindresearch/helios-render-kaggle). Feel free to use it, modify it, or extend it any way you like!",
    "3218558": "@floriancmi I found a bug in the visualization code.\n\nThe code is loading quaternions in **scalar-first** order `[w, x, y, z]`, but `scipy.spatial.transform.Rotation.from_quat()` expects **scalar-last** order `[x, y, z, w]` by default. This causes inconsistent or incorrect rotation behavior.\n\n```python\n        quat = [float(row[col]) for col in [\"rot_w\", \"rot_x\", \"rot_y\", \"rot_z\"]]\n```\n\n```python\n    rot = R.from_quat(frame_data[\"quat\"])\n```\n\nhttps://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.from_quat.html#scipy.spatial.transform.Rotation.from_quat",
    "3219538": "This is fantastic, thank you. I noticed the default framerate is 10, is this the sample rate for the sensor data? \nSome [💬other](https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/582463) [💬participants](https://www.kaggle.com/competitions/cmi-detect-behavior-with-sensor-data/discussion/582475) have been asking about the sampling rate as well.\n",
    "3242506": "So interesting ! ",
    "3239318": "Nice work keep it up",
    "3270963": "I made a new visualization that can visualize hands and finger movements from IMU data. Let me know what you guys think!\nhttps://github.com/fafa92/ArcaneHand",
    "3249379": "Hey, @floriancmi! Could someone please tell us the sample rate of the sensors so we don't guess/speculate?",
    "3235202": "Very nice one!",
    "3222371": "Hey, the video is good. Is it you have simulated using unity?",
    "3217404": "@floriancmi , wow seems very useful, thanks for sharing~!\n",
    "3218206": "",
    "3271112": "Thank you for sharing",
    "3271110": "Thank you for sharing,beginner-friendly",
    "3270972": "Super interesting! Thank you!",
    "3222994": "wow, thanks for sharing",
    "3222417": "great work"
  }
}