[{"content":"","date":"24 August 2026","externalUrl":null,"permalink":"/","section":"Bom dia ☀️","summary":"","title":"Bom dia ☀️","type":"page"},{"content":"","date":"24 August 2026","externalUrl":"https://doi.org/10.64898/2026.08.21.26360925","permalink":"/posts/ukb_fatigue_preprint/","section":"Posts","summary":"","title":"Evaluating computational assays of chronic fatigue using UK Biobank data","type":"posts"},{"content":"","date":"24 August 2026","externalUrl":null,"permalink":"/tags/paper/","section":"Tags","summary":"","title":"Paper","type":"tags"},{"content":"","date":"24 August 2026","externalUrl":null,"permalink":"/posts/","section":"Posts","summary":"","title":"Posts","type":"posts"},{"content":"","date":"24 August 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"","date":"24 June 2026","externalUrl":null,"permalink":"/tags/tools/","section":"Tags","summary":"","title":"Tools","type":"tags"},{"content":"In my previous post, I shared a preprint proposing a structured checklist to facilitate code review in mental health research. Our motivation to write this paper was straightforward: code review can improve the reliability of research results and fosters a culture of transparency and continuous learning. Yet, in practice it is often difficult to implement consistently. Getting started, if you\u0026rsquo;ve never done it before, can be hard. That is why we shared our experience and checklists.\nTo reduce that friction even further, I\u0026rsquo;ve now created a custom GPT based on the published checklist.\nThis is an experiment. One advantage of implementing the checklist as a GPT is that researchers can interact with it directly, test it on their own projects, and identify places where it could be improved.\nIf you work in mental health research and use this tool (or the original checklist), I would love to hear how well it performs, where it falls short, and what would additionally be useful.\n🧪🧪 You can start experimenting here . 🧪🧪\nSimply type:\nReview this codebase: url/to/your/awesome/project Alternatively, if the project is not online, you can upload your script.\nHave fun!\nPS: If you like it, kindly leave a review and some stars ✨\n","date":"24 June 2026","externalUrl":null,"permalink":"/posts/code_review_llms/","section":"Posts","summary":"\u003cp\u003eIn my previous post, I shared a \u003ca\n  href=\"https://www.preprints.org/manuscript/202510.0133\"\n    target=\"_blank\"\n  \u003epreprint\u003c/a\u003e\n proposing a structured checklist to facilitate code review in mental health research. Our motivation to write this paper was straightforward: code review can improve the reliability of research results and fosters a culture of transparency and continuous learning.\nYet, in practice it is often difficult to implement consistently. Getting started, if you\u0026rsquo;ve never done it before, can be hard. That is why we shared our experience and checklists.\u003c/p\u003e","title":"Tools for Code Review","type":"posts"},{"content":"","date":"2 October 2025","externalUrl":"https://www.preprints.org/manuscript/202510.0133","permalink":"/posts/code_review_preprint/","section":"Posts","summary":"","title":"Structured Code Review in Translational Neuromodeling and Computational Psychiatry","type":"posts"},{"content":"","date":"4 July 2025","externalUrl":"https://www.research-collection.ethz.ch/handle/20.500.11850/740464","permalink":"/posts/phd_thesis/","section":"Posts","summary":"","title":"Computational Psychiatry of Fatigue: Towards predicting individual symptoms from cognition and brain connectivity","type":"posts"},{"content":"","date":"4 July 2025","externalUrl":null,"permalink":"/tags/phd-thesis/","section":"Tags","summary":"","title":"PhD Thesis","type":"tags"},{"content":"","date":"30 June 2025","externalUrl":null,"permalink":"/tags/book/","section":"Tags","summary":"","title":"Book","type":"tags"},{"content":"🔔 Book announcement! 🔔\nAfter several years of ideating and much writing and rewriting, I have put out my very first book, called She Sails (links at the end of this post)!\nThis project would not have been possible without the support and encouragement I received, in particular from my better half, David ❤️. He is the reason I got bitten by the sailing bug in the first place, and he has shown me what true partnership looks like.\nWhat is the motivation for this book? There has been increasingly more discussion on the need for a stronger presence of women in sailing, especially in the marine industry and performance sailing. In a recent study by the World Sailing Trust , it was found that, on average, 59% of women have experienced gender-based discrimination, with those numbers increasing with age. Misconceptions around strength, talent, and strategic ability perpetuate this problem, as well as politics, lack of support, and lack of female role models.\nWhile many of these findings can be generalized to other forms of sailing, little data exists for those who choose to “just” cruise, that is, those who enjoy the pleasure of sailing and owning a boat, without making a profession out of it or racing. However, in my years sailing and talking to other women cruisers, it seems many of the same issues are present, and many ladies feel discouraged from assuming leadership positions or even learning the ropes.\nI would like us to change that!\nThis book is about making sailing more accessible — especially for those who come to it as adults. Learning to sail later in life presents unique challenges: not being raised around boats, not knowing how to troubleshoot onboard systems, or not having confidence in hands-on problem-solving. If you\u0026rsquo;re not already someone who enjoys tinkering, fixing, or figuring things out on the fly, the learning curve can feel impossibly steep. Part of what makes it daunting isn’t just the skills themselves — it’s the unfamiliar culture that comes with them, with differing expectations and language barriers. Learning to sail is also in and of itself learning a new language, where a “galley” is a kitchen, a “head” (I know, a head!) is a toilet, a “portlight” a window, etc. It can be confusing, but it’s not rocket science. Whatever your background, with a bit of work and persistence, you can do it!\nMy hope is that this book helps demystify the cruising life. I hope to show you that sailing can be learned, enjoyed, and owned — by anyone. In addition, my intention is to motivate by imparting knowledge. What I write in the book is based on what I have been formally taught, what I have read, what I have gleaned by talking to other sailors, as well as my own experience.\nThere is no one right way to do things and I do not pretend to have all the right answers, but hopefully my mental models are of use to some of you.\n\u0026ldquo;She Sails\u0026rdquo; is available in both paperback and Kindle versions, and can be purchased from all Amazon Marketplaces:\nAmazon UK 🇬🇧 (paperback) Amazon Germany 🇩🇪 (paperback + Kindle) Amazon France 🇫🇷 (paperback + Kindle) Amazon Spain 🇪🇸 (paperback) Amazon Italy 🇮🇹 (paperback + Kindle) Amazon Netherlands 🇳🇱 (paperback + Kindle) Amazon Poland 🇵🇱 (paperback) Amazon Sweden 🇸🇪 (paperback) Amazon Japan 🇯🇵 (paperback + Kindle) Amazon Canada 🇨🇦 (paperback) Amazon Australia 🇦🇺 (paperback) Amazon US 🇺🇸 (paperback + Kindle) \u0026hellip; and more!\nIf you find any of it useful, please do leave a review on Amazon, on Goodreads , or simply tell someone you know about the book 📖!\nFair winds to you all ⛵️💨\nInês\n","date":"30 June 2025","externalUrl":null,"permalink":"/posts/she_sails/","section":"Posts","summary":"\u003cp\u003e🔔 Book announcement! 🔔\u003c/p\u003e\n\u003cp\u003eAfter several years of ideating and much writing and rewriting, I have put out my very first book, called \u003cem\u003eShe Sails\u003c/em\u003e (links at the end of this post)!\u003c/p\u003e\n\u003cp\u003eThis project would not have been possible without the support and encouragement I received, in particular from my better half, David ❤️.\nHe is the reason I got bitten by the sailing bug in the first place, and he has shown me what true partnership looks like.\u003c/p\u003e","title":"She Sails","type":"posts"},{"content":"","date":"1 June 2023","externalUrl":"https://www.sciencedirect.com/science/article/pii/S1053811923001325","permalink":"/posts/predicting_depression_paper/","section":"Posts","summary":"","title":"Predicting future depressive episodes from resting-state fMRI with generative embedding","type":"posts"},{"content":"","date":"19 May 2023","externalUrl":"https://onlinelibrary.wiley.com/doi/full/10.1111/ejn.16048","permalink":"/posts/imefa_paper/","section":"Posts","summary":"","title":"Interoceptive and metacognitive facets of fatigue in multiple sclerosis","type":"posts"},{"content":"","date":"2 January 2023","externalUrl":null,"permalink":"/tags/german/","section":"Tags","summary":"","title":"German","type":"tags"},{"content":"","date":"2 January 2023","externalUrl":null,"permalink":"/tags/interview/","section":"Tags","summary":"","title":"Interview","type":"tags"},{"content":"","date":"2 January 2023","externalUrl":"https://ms-perspektive.de/famri-studie/","permalink":"/posts/ms_perspektive_podcast/","section":"Posts","summary":"","title":"Mechanismen von Fatigue bei Multipler Sklerose – Untersuchung mittels fMRI (FAMRI Studie)","type":"posts"},{"content":"","date":"1 January 2023","externalUrl":"https://www.tnu.ethz.ch/fileadmin/user_upload/documents/Publications/2022/2022_Mueller-Schrader_Heinzle_Mueller_Lanz.pdf","permalink":"/posts/trexi_paper/","section":"Posts","summary":"","title":"Individual treatment expectations predict clinical outcome after lumbar injections against low back pain","type":"posts"},{"content":"","date":"1 January 2023","externalUrl":"https://www.instagram.com/p/CeNqVtMjrNO/","permalink":"/posts/radio_zuerisee_interview/","section":"Posts","summary":"","title":"Welt-MS Tag - Radio Zürisee Interview","type":"posts"},{"content":" 2024 Update: The first two sections of this post still hold value. However, the market might have changed, new products might available or older products might not be sold anymore.\nLet me know here 💬 What is actigraphy? # Actigraphs are accelerometer-based devices that have been used to evaluate sleep and wake cyles in humans for nearly four decades. These come in the form of compact, lightweight, typically wrist-worn devices that may look like simple wrist-watch at first 1. Although polysomnography (PSG) continues to be the gold standard for sleep assessments, actigraphs are an attractive because of their ease of use, lower associated expenses, and the possibility to record continuous data over multiple days and in a subject\u0026rsquo;s home environment 1.\nWhat considerations should be made when purchasing an actigraph? # Spec Considerations Accelerometer Always purchase an omnidirectional or triaxial accelerometer, with the ability to record in 30-second or 1 minute epochs. Flexible data collection parameters (e.g. epoch length) are a plus) Appearance To consider. Bulky or heavy devices might be associated with less adherence to your study protocol Event markers Also called \u0026ldquo;event logging\u0026rdquo;. A useful plus! These can come in the form of a button that a subject needs to press to signal a specific event. Light sensors Also recommended. If embedded in the device, these can help identify bed and wake times. Battery type Whether rechargeable or disposable, the battery needs to be able to record a minium of 3 days. Ideally, it should record up to 2 weeks of data. Data storage and memory Nonvolatile memory that allows information to be stored even if the battery fails is recommended. Make sure you don\u0026rsquo;t lose data. Data access I always require access to the raw data and prefer open-source tools when it comes to software. User support When you run into issues with the device or software, you will probably want to talk to a human. What is the user support like? What is out there? # For my own research, I did an extensive market research, which I reproduce and summarize here.\nLegend:\n👋: motion 🔦: light 🌡️: temperature GENEactiv Original Company 🏛️: Activinsights Sensors 👋: 👋, 🔦, near-body 🌡️ Battery time 🪫: 45 days @ 10Hz, 7 days @ 100Hz Raw data 💾: .bin \u0026amp; .csv Free trial 💸: Yes Other considerations 🔮: open-source software. Event logging. Analysis services are offered separately. Large list of publications. Waterproof. 1-year warranty. ActiGraph wGT3X-BT Company 🏛️: ActiGraph Sensors 👋: 👋, 🔦 Battery time 🪫: 25 days (wireless disabled, 30 Hz sample rate) Raw data 💾: .csv \u0026amp; .xlsx Free trial 💸: nope. Other considerations 🔮: No event logging. Not waterproof (should be removed if the participant goes swimming). Uses zero-crossing mode (not recommented). Other products (without 🔦 sensors) from Actigraph can be viewed here Everion Company 🏛️: Biofourmis Sensors 👋: 👋, 🌡️, electrodermal activity, photoplethysmography Battery time 🪫: ~32 hours Raw data 💾: .json Free trial 💸: ? Other considerations 🔮: Worn on arm instead of wrist. Readiband Company 🏛️: Fatigue Science Sensors 👋: 👋, 🌡️, (wrist and ambient), 🔦 Battery time 🪫: \u0026gt;2 months (60s epoch) Raw data 💾: .txt Free trial 💸: ? Other considerations 🔮: Event logging. Move 4 Company 🏛️: Movisens Sensors 👋: 👋, 🌡️ Battery time 🪫: ~ 7 days Raw data 💾: unisens Free trial 💸: Yes. Other considerations 🔮: wear locations: Hip, Chest, Wrist, Upper Arm, Ankle, Thigh. Software license valid for one computer. LightMove 4 Company 🏛️: Movisens Sensors 👋: 👋, 🌡️, 🔦 Battery time 🪫: ~ 7 days Raw data 💾: unisens Free trial 💸: Yes. Other considerations 🔮: Wear locations: Wrist. Software license valid for one computer. Actiwatch Spectrum Plus \u0026amp; Pro Company 🏛️: Philips Sensors 👋: 👋, 🔦 Battery time 🪫: 50-60 days (1 min epochs) Raw data 💾: no access. Free trial 💸: Yes. Other considerations 🔮: Very expensive. Waterproof. Event logging. Motion Watch Company 🏛️: Camntech Sensors 👋: 👋, 🔦 Battery time 🪫: 22 days @ 15 sec epoch Raw data 💾: .csv Free trial 💸: yes. Other considerations 🔮: Waterproof. Can be used in contact sports. Event logging. Offer support via phone/email. 2-year warranty. Paid software with limited user license Closing remarks # I have definitely not used all of these devices myself and would be curious to hear thoughts from others who have! If I failed to list a device which should definitely be in this list, let me know!\nAncoli-Israel et al. The SBSM Guide to Actigraphy Monitoring: Clinical and Research Applications, Behavioral Sleep Medicine, 2015\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"9 December 2022","externalUrl":null,"permalink":"/posts/actigraphy/","section":"Posts","summary":"\u003cdiv\n  \n    class=\"flex px-4 py-3 rounded-md bg-primary-100 dark:bg-primary-900\"\n  \n  \u003e\n  \u003cspan\n    \n      class=\"text-primary-400 ltr:pr-3 rtl:pl-3 flex items-center\"\n    \n    \u003e\n    \n\n  \u003cspan class=\"relative block icon\"\u003e\n    \u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cpath fill=\"currentColor\" d=\"M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z\"/\u003e\u003c/svg\u003e\n\n  \u003c/span\u003e\n\n\n  \u003c/span\u003e\n\n  \u003cspan\n    \n      class=\"dark:text-neutral-300\"\n    \n    \u003e\u003cp\u003e\u003cstrong\u003e2024 Update\u003c/strong\u003e: The first two sections of this post still hold value. However, the market might have changed, new products might available or older products might not be sold anymore.\u003c/p\u003e","title":"Actigraphy - What is out there?","type":"posts"},{"content":"","date":"15 December 2021","externalUrl":"https://www.sciencedirect.com/science/article/pii/S1053811921009356","permalink":"/posts/cb-dcm/","section":"Posts","summary":"","title":"Conductance-based DCM: A review","type":"posts"},{"content":"","date":"13 September 2021","externalUrl":"https://video.ethz.ch/lectures/d-itet/2021/autumn/227-0971-00L/75ed8f8d-e0af-4b3c-b8a9-707f99e00324.html","permalink":"/posts/fatigue-talk/","section":"Posts","summary":"","title":"Fatigue - Understanding its pathophysiology","type":"posts"},{"content":"","date":"13 September 2021","externalUrl":null,"permalink":"/tags/talk/","section":"Tags","summary":"","title":"Talk","type":"tags"},{"content":"","date":"1 June 2021","externalUrl":"https://www.frontiersin.org/journals/psychiatry/articles/10.3389/fpsyt.2021.680811/full","permalink":"/posts/tapas_paper/","section":"Posts","summary":"","title":"TAPAS: An Open-Source Software Package for Translational Neuromodeling and Computational Psychiatry","type":"posts"},{"content":"","date":"10 March 2021","externalUrl":"https://www.youtube.com/watch?v=hnIasqZwtwQ\u0026t=14s","permalink":"/posts/dspt/","section":"Posts","summary":"","title":"Model interpretability in Healthcare","type":"posts"},{"content":" 2024 Update: By now, we all have a much better understanding of how to conduct online (or even hybrid!) events. I have however decided to leave this blog post as is, as an artefact of the 2020 zeitgeist. When the corona crises started we decided to go online with our @CompPsychiatry course and make it free of charge. The result was a course that ended up being 4x bigger than usual (\u0026gt;1000 participants) and more inclusive than ever. Thanks to everyone who helped pull this off!!! pic.twitter.com/ybi8QrgI19\n\u0026mdash; Frederike Petzschner (@rikepetzschner) September 11, 2020 This year\u0026rsquo;s Computational Psychiatry Course (CPC) Zurich, like many other events all over the world, faced the challenge of moving to an online setting. Much in the spirit of this post , I\u0026rsquo;ll share here the combination of tools that was used and how useful they proved to be at the CPC Zurich 2020. All the materials from this year\u0026rsquo;s and previous events can be found here . This year\u0026rsquo;s video recordings can be found here .\nWebinar tool - Creating a focused environment # We used Zoom Webinar to broadcast the lectures. Our Zoom Webinar workflow included:\nParticipant Registration: participants were asked to register for the webinar. Using this feature of Zoom Webinar meant setting up one Webinar per day, which forced participants and speakers to use different links for each day. A shoutout to Zoom here: it would be great to be able to add a CSV of the registrants to a recurring Zoom Webinar 😊. Technical Checks: checking for technical problems (e.g. faulty video sharing, poor audio) can be done in Zoom Webinar\u0026rsquo;s Practise room, before broadcasting. When these checks are done consistently, you avoid quite a few live surprises 😉. Chat options: Participants had the opportunity to chat on Slack, and so the chat on Zoom Webinar was disabled. This proved to have one major advantage: it made chat an opt-in feature of the lectures, and not something that just came with the tool used. This led to less distractions for the speakers and chairs, and possibly for some attendees. In addition, this also meant that it was clear that the Q\u0026amp;A tool was the tool to use to ask questions (no chat moderator hunting for questions needed!). Q\u0026amp;A: attendees posed their questions via de Q\u0026amp;A tool and were able to upvote each other\u0026rsquo;s enquiries. Added to this, the session chair would also curate the Q\u0026amp;A list and sometimes combine related questions. Participants always posed a lot of questions, and to not cut discussions short, they were invited to repost them in the Slack Q\u0026amp;A channel. Speakers often answered further questions on Slack 💛. Promoting interactions # Slack # Slack proved to be a great tool: it was a way of answering questions and sharing resources in a manner that was visible to everyone. In addition, attendees often supported each other by answering each other\u0026rsquo;s questions! 😍 Besides the usual #general, #fun and #random channels, the following other channels were created:\n#q_and_a: this channel was extensively used to follow up on discussions held during the webinar and also provided an opportunity for attendees to ask further questions. #resources: to refer to journal articles, books, videos, slides, links to open source software packages\u0026hellip; some speakers even provided extensive reading lists! #tutorial_helpdesk: support was provided via this channel for the tutorials involving installation of software. #zoom: to discuss technical issues related to zoom. Attendees would use this channel to report issues during the webinar (and sometimes even propose solutions). #job_postings: self-descriptive 🙃 #social: a space where attendees could introduce themselves and start discussions that could followed up on in the Gather rooms (see below). Gather rooms # Gather is a new video chat platform with a Gameboy feel, particularly interesting because it parts from traditional meeting-directed software. A user on Gather becomes a sprite that can move around in a pixel-arty virtual space. You only get to hear and talk to someone once you have sufficiently approached them. This is essential, because it enables users to form groups and have conversations in parallel\u0026hellip; like in real life, basically. And, like in real life, you can move from one group to another and actually run into people you know. Gather offers a set of maps you can use off the shelf. However, making your own customized maps is not only easy, it\u0026rsquo;s also a lot of fun! Tutorials on how to do this can be found on Gather\u0026rsquo;s YouTube channel . I personally use online tools such as this platform to add more pixel art and nerdy references 🤓.\nMind-matching # Also in the spirit of what has been done at other great events and conferences, we used freely available software , coupled with input from our own 🧠s to match participants based on their research interests. Mind-matchers could then contact each other and meet. Having been matched myself at other events, I found mind-matching to be a great way to meet new people. Specifically, because these meetings have to be planned and organized, I found that these interactions were always very purposeful and focused. I had great conversations and met super interesting people via mind-matching, and hope CPC Zurich attendees did so too.\n","date":"13 September 2020","externalUrl":null,"permalink":"/posts/online-events/","section":"Posts","summary":"\u003cdiv\n  \n    class=\"flex px-4 py-3 rounded-md bg-primary-100 dark:bg-primary-900\"\n  \n  \u003e\n  \u003cspan\n    \n      class=\"text-primary-400 ltr:pr-3 rtl:pl-3 flex items-center\"\n    \n    \u003e\n    \n\n  \u003cspan class=\"relative block icon\"\u003e\n    \u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cpath fill=\"currentColor\" d=\"M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z\"/\u003e\u003c/svg\u003e\n\n  \u003c/span\u003e\n\n\n  \u003c/span\u003e\n\n  \u003cspan\n    \n      class=\"dark:text-neutral-300\"\n    \n    \u003e\u003cstrong\u003e2024 Update\u003c/strong\u003e: By now, we all have a much better understanding of how to conduct online (or even hybrid!) events.\nI have however decided to leave this blog post as is, as an artefact of the 2020 zeitgeist.\u003c/span\u003e\n\u003c/div\u003e\n\n\u003cblockquote class=\"twitter-tweet\"\u003e\u003cp lang=\"en\" dir=\"ltr\"\u003eWhen the corona crises started we decided to go online with our \u003ca href=\"https://x.com/CompPsychiatry?ref_src=twsrc%5Etfw\"\u003e@CompPsychiatry\u003c/a\u003e course and make it free of charge. The result was a course that ended up being 4x bigger than usual (\u0026gt;1000 participants) and more inclusive than ever. Thanks to everyone who helped pull this off!!! \u003ca href=\"https://t.co/ybi8QrgI19\"\u003epic.twitter.com/ybi8QrgI19\u003c/a\u003e\u003c/p\u003e","title":"COVID \u0026 Tools for Online Events","type":"posts"},{"content":" Scientists are expected to be effective communicators, but that can be a little tricky without a few conscious tricks up your sleeve.\nVisualization, in particular, can be a very powerful means of conveying information, be it in your papers, posters, presentations, chapters, or blogposts.\n🖍 Nota bene: In this post, I summarize a few recommendations from various sources that I, personally, found very useful. For a more in-depth take on the following and other points, do consult the series of Points of View columns published in Nature Methods. A collection of these can be found in the resources section below. Another great online read can be found here .\nPlease note that all of these recommendations are meant to be general and that one should always take into account any field-specific conventions.\nColor # There are a few things to know about color.\nFirst, color varies in terms of:\nHue: \u0026ldquo;the attribute we use to classify a color as red or yellow.\u0026rdquo; [1] Saturation: which \u0026ldquo;describes the neutrality of a color; a red object with little or no white is said to be very saturated.\u0026rdquo; [1] Lightness: which \u0026ldquo;tells us about its relative ordering on the dark-to-light scale.\u0026rdquo; [1] Figure 1 shows a way to represent these dimensions:\nFigure 1: Picking colors. Now, when picking colors, these should ideally be discernible in grayscale as well. That way, if someone prints your figure in black and white, they still get the message 😊. One way to do this is to spiral around the color wheel while varying lightness as well. This only works effectively for a limited number of colors: around 6 to 8 [1]. Past 8, it just becomes harder to find discernible colors.\nAs for representing data, color is ill-suited to represent quantitative data, because it is not in principle clear how to order different colors. It is, however, appropriate to characterize categorical data.\nWhile color might make a figure seem nicer, it should be used judiciously. Indeed, there are better strategies to compare elements, and these were ranked by Cleveland and McGill [2]:\nRank Aspect compared Illustration 1 Position along common scale 2 Position on the same, but non-aligned scales 3 Length 4 Angle 5 Area 6 Volume 7 Color saturation 8 Color hue This made me realize that bar charts are a very effective tool for comparison!\nA word on color blindness # Given that certain forms of color blindness are quite common, this is something that you should definitely take into account. Here is a list of colors from Bang Wong, optimized for color-blind individuals [3]:\nColor Color name RGB Black 0, 0, 0 Orange 230, 159, 0 Sky blue 86, 180, 233 Blueish green 0, 158, 115 Yellow 240, 228, 66 Blue 0, 114, 178 Vermillion 213, 94, 0 Reddish purple 204, 121, 167 Salience # Now that we\u0026rsquo;ve reviewed a few tricks of how to effectively compare elements, let\u0026rsquo;s see how to create contrast, i.e. visually separate one part of an image from the rest. Salience, the visual quality of an object that makes it more prominent, can be achieved in several ways [1]:\nFigure 2: Achieving salience. A few notes on this:\nSometimes, it might make sense to have multiple views of the same graph, in order to emphasize one thing at a time. Make sure the most salient aspect of the figure is also the most relevant! Gestalt principles # The Gestalt principles of perception are a set of principles which attempt to explain why humans naturally perceive objects as being organized or grouped [5]. There are several principles [4-5]:\nPrinciple Remarks Similarity Similar objects are grouped together Proximity Grouping based on distance (do you see 2 rows?) Connection Lines create a clear connection and groups Enclosure Enclosure can overcome the other principles. Notice how you can use enclosure to bring the reader\u0026rsquo;s attention to different parts of a graph or table!\nLayout # A layout has both an aesthetic and clarifying purpose. A simple way to organize your slides/posters is to follow the \u0026ldquo;rule of thirds\u0026rdquo; [6].\nFigure 3: Power points. Basically, you can start by dividing the page into 9 equal parts. Objects placed along the lines and especially at their intersection points (the so-called power points) become more prominent. You can use this to guide the observer.\nOther # The above principles should already help a fair amount, but here are few other tips:\nNegative space (or whitespace): use it to structure your visualization and to let it breathe (no one likes crammed posters\u0026hellip;). For more on this, see [7]. Typography: favor sans serif fonts for slides and serif fonts for greater lengths of text (e.g. posters, papers) [8]. Overview figures: these can be very helpful! However, keep them simple and avoid entering graphs or results at this point [9]. 🧨 Pie charts: while pie charts can be useful in describing parts of a whole and are standard practise in some fields, they have been criticized. Edward Tufte once wrote \u0026ldquo;the only design worse than a pie chart is several of them\u0026rdquo; [10]. To compare elements, pie charts rely on differences in area or angle, and we have previously seen that there are more effective means of comparison. Hence, a bar chart can often be a more effective alternative. If you do opt for a pie chart, you might want to know that a specific ordering of slices is sometimes recommended. Specifically, Bang Wong writes: \u0026ldquo;place the largest wedge to the right of 12 o’clock, the second largest to the left of 12 o’clock and the remainder counter-clockwise descending in size\u0026rdquo; [11]. Graphically: Figure 4: Organizing a pie chart. References # [1] B. Wong, \u0026ldquo;Color coding\u0026rdquo;, Nature Methods, 7:573, 2010. [2] W. S. Cleveland, R. McGill, \u0026ldquo;Graphical Perception and Graphical Methods for Analyzing Scientific Data\u0026rdquo;, Science, 229(4716), 1985. [3] B. Wong, \u0026ldquo;Color blindness\u0026rdquo;, Nature Methods, 8:441, 2011. [4] B. Wong, \u0026ldquo;Gestalt principles (part 1)\u0026rdquo;, Nature Methods, 7:863, 2010. [5] Principles of grouping, Wikipedia, [accessed on 10.02.2020] [6] B. Wong, \u0026ldquo;Layout\u0026rdquo;, Nature Methods, 8:783, 2011. [7] B. Wong, \u0026ldquo;Negative Space\u0026rdquo;, Nature Methods, 8:5, 2011. [8] B. Wong, \u0026ldquo;Typography\u0026rdquo;, Nature Methods, 8:277, 2011. [9] B. Wong, \u0026ldquo;The overview figure\u0026rdquo;, Nature Methods, 8:365, 2011. [10] E. Tufte, The Visual Display of Quantitative Information, 2nd edition, Graphics Press, 2001. [11] B., Wang, Points of review (part 2), Nature Methods, 8:189, 2011. ","date":"7 February 2020","externalUrl":null,"permalink":"/posts/data-visualization/","section":"Posts","summary":"\u003cdiv class=\"lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl\"\u003e\n  \u003cp\u003eScientists are expected to be effective communicators, but that can be a little\ntricky without a few conscious tricks up your sleeve.\u003c/p\u003e\n\u003cp\u003eVisualization, in particular, can be a very powerful means of conveying information,\nbe it in your papers, posters, presentations, chapters, or blogposts.\u003c/p\u003e\n\n\u003c/div\u003e\n\n\u003cp\u003e🖍 \u003cem\u003eNota bene\u003c/em\u003e: In this post, I summarize a few recommendations from various sources\nthat I, personally, found very useful.\nFor a more in-depth take on the following and other points, do consult the series\nof Points of View columns published in \u003cem\u003eNature Methods\u003c/em\u003e.\nA collection of these can be found in the \u003ca\n  href=\"#references\"\u003eresources section\u003c/a\u003e\n below.\nAnother great online read can be found \u003ca\n  href=\"https://www.knowablemagazine.org/article/mind/2019/science-data-visualization\"\n    target=\"_blank\"\n  \u003ehere\u003c/a\u003e\n.\u003c/p\u003e","title":"Data Visualization","type":"posts"},{"content":" 2024 Update: Euler is now using Slurm instead of LSF. While this blog post can this be still useful, the LSF commands need to be translated into Slurm commands. See this quick reference . 🖍 Nota bene: You will need to be an ETH member to use Euler. However, this post might still be useful if you happen to be working on another cluster which uses the LSF batch system. Also relevant: I am currently mainly using MATLAB to run my simulations, so you\u0026rsquo;ll find some MATLAB specific advice. For Python specifics, check out this page .\n⌛️ TL;DR: check out the end of the blog post for a practical suggestion on how to structure your job submission scripts.\nEuler ? # Euler is the high performance computing cluster at ETH Zurich.\nLike its predecessors, Euler follows a shareholder model, and is for the most part financed by its users. These \u0026ldquo;shareholders\u0026rdquo; then receive a share of the cluster\u0026rsquo;s resources (i.e CPU time), which is proportional to their investment. However, a small share of Euler is financed by the IT Services and is open to all ETH members.\nAnd that\u0026rsquo;s a huge hooray for students!\nEuler is really a great resource, but can be associated with a steep learning curve, especially if you are not used to working with a terminal and all that jazz.\nIn this post, we\u0026rsquo;ll go through:\nHow to run your first job Some advanced tricks A template for future jobs Running a simple job # Connecting to Euler # The first thing you need to do is to connect to Euler. To do that, you either need to be within the ETH network or connected via VPN. The only requirement to login is a valid ETH account (no forms to fill out 🎉). Open a terminal and type:\nssh username@euler.ethz.ch Now type in your NETHZ password\u0026hellip; and you\u0026rsquo;re in! If this is the first time you\u0026rsquo;re logging in, the only extra step is to accept the cluster\u0026rsquo;s usage rights.\nFile transfer # To run your jobs, you\u0026rsquo;ll need to transfer your scripts and data to the cluster. To do so, you can use the scp command. The general use is as follows:\nscp [options] source destination Specifically, what you\u0026rsquo;ll need to type is:\nscp file username@euler.ethz.ch:path/to/destination # from local computer to Euler scp username@euler.ethz.ch:path/to/source/file path/to/destination # from Euler to local computer To transfer directories, the option -r needs to be used:\nscp -r directory username@euler.ethz.ch:path/to/destination # from local computer to Euler scp -r username@euler.ethz.ch:path/to/source/directory path/to/destination # from Euler to local computer You\u0026rsquo;ll find that acquainting yourself with bash scripting will come in handy for this type of commands. Check out the cheat sheet I left in the end of the blog post for just that!\nA word on data storage # When it comes to personal storage, every user has access to two options:\nHOME=/cluster/home/username SCRATCH=/cluster/scratch/username Home is a safe long-term storage for important data. Only you can access it and the content is saved every hour (snapshot) and every night (tape backup). You are allowed 16 GB of data or a maximum of 100 000 files. This is the directory (folder) you\u0026rsquo;ll automatically find yourself in once you login.\nScratch, on the other hand, is designed as a fast short-term storage. There is no backup and ETH will warn you that it is purged on a regular basis. Your disk quota in scratch rises to 2.5 TB and a maximum of 1 000 000 files.\nTo check how far away (or how close\u0026hellip;) you are from your quota, use the command lquota:\nlquota +-----------------------------+-------------+------------------+------------------+------------------+ | Storage location: | Quota type: | Used: | Soft quota: | Hard quota: | +-----------------------------+-------------+------------------+------------------+------------------+ | /cluster/home/user | space | 8.85 GB | 17.18 GB | 21.47 GB | | /cluster/home/user | files | 25610 | 80000 | 100000 | +-----------------------------+-------------+------------------+------------------+------------------+ | /cluster/shadow | space | 4.10 kB | 2.15 GB | 2.15 GB | | /cluster/shadow | files | 2 | 50000 | 50000 | +-----------------------------+-------------+------------------+------------------+------------------+ | /cluster/scratch/user | space | 237.57 kB | 2.50 TB | 2.70 TB | | /cluster/scratch/user | files | 29 | 1000000 | 1500000 | +-----------------------------+-------------+------------------+------------------+------------------+ For more information on data storage (e.g. options for shareholders), be sure to check out this presentation or this page .\nUsing Euler # All right! Now we\u0026rsquo;re ready to start using the cluster! And it all boils down to this:\nbsub [LSF options] job Of course, the tricky part is to figure out how to use the options and what constitutes a job. Well, here are a few options I find particularly useful (for more, check out this reference ):\nOption Description -W HH:MM Allowed duration for job. Default: 04:00 hours. -R \u0026quot;rusage[mem=X]\u0026quot; Memory (in MB per core) required. Default: X = 1024 MB. -J jobname Assigns name to job. Not necessarily unique! -w \u0026quot;depcond\u0026quot; Sets dependencies between jobs. More on this below. -r If your node crashes, LSF will re-run the job on another node. Now mind you that a job can be:\na Linux command: bsub [LSF options] command a shell script: bsub [LSF options] \u0026lt; script a program: bsub [LSF options] path/to/program Ok, so far so good. Now, to use MATLAB, you\u0026rsquo;ll first need to load it.\nmodule load new matlab/R2018a Notice that I am loading a specific version of MATLAB. For more information on how to configure the MATLAB version you want to run, check out this link .\nOnce that\u0026rsquo;s done, let\u0026rsquo;s say you would like to fit a model using a script you wrote beforehand. To submit your job, you then type:\nbsub -J \u0026#34;fitModel\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;fit_model\u0026#34; Pardon? What are all those options? It\u0026rsquo;s fairly easy:\n-singleCompThread: forces MATLAB to use only one thread for its computations (prevents MATLAB from overloading the compute nodes). -nodisplay: just explicitly tell MATLAB no graphical display is available. ⚠️ #MatlabProTip: the -r option must be followed by a function. That means that you should omit the .m at the end of your script name. This can be confusing or easily overlooked if your function doesn’t take in any arguments (as in the example above), and has once cost me an embarrassing amount of time.\n⚠️⚠️ #Update: the -r option is deprecated in Matlab 2019a and newer versions. Instead, the -batch option should be used. For more on this, check out this link .\nYou have submitted your job and get back:\nGeneric job. Job \u0026lt;94709747\u0026gt; is submitted to queue \u0026lt;normal.4h\u0026gt;. That looks good. To manage your jobs, you\u0026rsquo;ll then need two new commands: bjobs and bkill, which let you monitor or kill all jobs or specific jobs (for more details, read this reference ).\nbjobs \u0026gt; JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME \u0026gt; 94709747 jdoe RUN normal.4h euler01 eu-c7-106-0 fitModel Jul 3 07:19 bkill 0 # terminate all jobs \u0026gt; Job \u0026lt;94709747\u0026gt; is being terminated An alternative to bjobs is bbjobs (aka better bjobs).\nMore advanced tricks # Let\u0026rsquo;s take things up a notch. Let\u0026rsquo;s say that you need to run jobs which somehow depend on each other. The example I\u0026rsquo;ll use here is a greedy feature selection algorithm. Don\u0026rsquo;t mind the details, the important thing is you need to do your computations in three stages:\nRun a setup function (e.g. restructure some folders) Train your models Choose the best model Now that means that you only want step 2 to kick in once the setup is ready. That\u0026rsquo;s called job chaining and can be done as follows:\nbsub -J job1 command1 bsub -J job2 -w \u0026#34;done(job1)\u0026#34; command2 bsub -J job3 -w \u0026#34;done(job2)\u0026#34; command3 Note however that the condition for job2 is only fulfilled if job1 is completed successfully. If, for some reason, job1 crashes or is killed because it reached the runtime or memory limit, then the dependency for job2 is never true and job2 will stand, pending, forever\u0026hellip; If you actually, for some heartless reason, don\u0026rsquo;t really care what happens to job1, then you should write:\nbsub -J job1 command1 bsub -J job2 -w \u0026#34;ended(job1)\u0026#34; command2 If step 2 involves a suite of models and you want to only start step 3 once all models in step 2 are finished, then you might run into a problem.\nIf you only have two models and don\u0026rsquo;t mind writing out all the dependencies, you can opt for:\nbsub -J job1 command1 # train model 1 bsub -J job2 command2 # train model 2 bsub -J job3 -w \u0026#34;done(job1) \u0026amp;\u0026amp; done(job2)\u0026#34; command3 # choose best model If, on the other hand, you are fitting a lot of models in step 2, you should consider using job arrays .\nbsub -J job[1-10] command -J job[1-10] defines the name of the array and the number of jobs it will contain (in this case: 10). You then need to get the JOBID of this job array. This is because the JOBID will be the same for the whole job array, but different subjobs will have different names. To get the JOBID, one way is to use bjobs and just copy the JOBID (let\u0026rsquo;s say: 94709747). Then, you can write:\nbsub -w \u0026#34;numdone(94709747,*)\u0026#34; -J job2 command2 However, if you prefer (I would) to have the JOBID extracted automatically, then this is what you want:\nJOBID=$(bsub command1 | awk \u0026#39;/is submitted/{print substr($2, 2, length($2)-2);}\u0026#39;) if [ -n \u0026#34;$JOBID\u0026#34; ]; then bsub -w \u0026#34;numdone($JOBID,*)\u0026#34; command2 fi The first line of code will run the job it contains and extract the job\u0026rsquo;s ID. Filling two needs with one deed 💪. Oh wait, but what if I need to pass the array index as an argument to a function? That can also be done! You can pass $LSB_JOBINDEX as a command-line argument. Note the backslash \\ before $LSB_JOBINDEX:\nbsub -J \u0026#34;job[1-10]\u0026#34; matlab -nodisplay -singleCompThread -r \u0026#34;my_function(\\$LSB_JOBINDEX)\u0026#34; 💣 Ok, now an even harder thing to do would be to set a dependency on multiple job arrays. That can also be done, with a few bash tricks:\ndep_cond=\u0026#34;\u0026#34; # create a variable to store the full dependency for i in {1..50}; do JOBID=$(bsub -J \u0026#34;job$i[1-10]\u0026#34; matlab -nodisplay -singleCompThread -r \u0026#34;my_function(\\$LSB_JOBINDEX)\u0026#34; | awk \u0026#39;/is submitted/{print substr($2, 2, length($2)-2);}\u0026#39;) dep_cond+=\u0026#34; \u0026amp;\u0026amp; numdone($JOBID,*)\u0026#34; # add new dependencies done dep_cond=${dep_cond:4} # remove leading \u0026#34; \u0026amp;\u0026amp; \u0026#34; bsub -w \u0026#34;$dep_cond\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;my_function2()\u0026#34; A huge thank you to the Euler cluster support for this one! In particular to Oliver Byrde !\nA modest template # Here is a template of the type of scripts I like. Notice the following:\nUse of $1: Taking in arguments from the command line is, in my opinion, really nice. It saves you the time of opening vim and having to edit, save, quit. You just type your arguments and click enter! Use of echo with if/else statements to check if everything is running as planned. Requirement of user confirmation. Some might find this annoying, but I have often realized, when submitting the job, that something was wrong. Requiring me to type in a confirmatory \u0026ldquo;yes\u0026rdquo; adds an extra check. This script reconstructs the steps we had seen before, but with multiple iterations added, hence the for loop.\n#!/bin/bash # Loading matlab module echo loading matlab module... module load new matlab/R2017b # Necessary input arg1=$1 # takes in first input argument from command line arg2=$2 # second input argument from command line niter=50 # Checking important arguments if [ \u0026#34;$arg2\u0026#34; == \u0026#34;\u0026#39;this\u0026#39;\u0026#34; ] || [ \u0026#34;$arg2\u0026#34; == \u0026#34;\u0026#39;that\u0026#39;\u0026#34; ]; then echo \u0026#34;Argument 2 recognized!\u0026#34; else echo \u0026#34;Argument 2 NOT recognized! You will get an error!\u0026#34; fi # Run your loop read -p \u0026#34;Run your cool script? [y: yes; n: no]\u0026#34; -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then for ((i = 1; i \u0026lt;= $niter; i++)); do # Run setup if [[ $i -eq 1 ]]; then bsub -J \u0026#34;Setup$i\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;setup($arg1,$arg2,$i)\u0026#34; else last_iter=$((i-1)) bsub -J \u0026#34;Setup$i\u0026#34; -w \u0026#34;done(saveBest$last_iter)\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;setup($arg1,$arg2,$i)\u0026#34; fi # Fit your models bsub -J \u0026#34;fitModels$i\u0026#34; -w \u0026#34;done(Setup$i)\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;fit_models($arg1,$arg2,$i)\u0026#34; # Save your best model bsub -J \u0026#34;saveBest$i\u0026#34; -w \u0026#34;done(fitModels$i)\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;save_best_model($arg1,$arg2,$i)\u0026#34; done fi Compare that to a version which uses job arrays:\n#!/bin/bash # Loading matlab module echo loading matlab module... module load new matlab/R2017b # Necessary input arg1=$1 # takes in first input argument from command line arg2=$2 # second input argument from command line niter=50 # Run your loop read -p \u0026#34;Run your cool script? [y: yes; n: no]\u0026#34; -n 1 -r echo if [[ $REPLY =~ ^[Yy]$ ]]; then for ((i = 1; i \u0026lt;= $niter; i++)); do # Run setup if [[ $i -eq 1 ]]; then bsub -J \u0026#34;Setup$i\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;setup($arg1,$arg2,$i)\u0026#34; else last_iter=$((i-1)) bsub -J \u0026#34;Setup$i\u0026#34; -w \u0026#34;done(saveBest$last_iter)\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;setup($arg1,$arg2,$i)\u0026#34; fi # Fit your models and extract JOBID from job array max_sim=$((nparam-i+1)) JOBID=$(bsub -J \u0026#34;fitModels$i[1-$max_sim]\u0026#34; -w \u0026#34;done(Setup$i)\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;fit_models($arg1,$arg2,\\$LSB_JOBINDEX)\u0026#34; | awk \u0026#39;/is submitted/{print substr($2, 2, length($2)-2);}\u0026#39;) # Save the best model using JOBID as a dependency if [ -n \u0026#34;$JOBID\u0026#34; ]; then bsub -J \u0026#34;saveBest$i\u0026#34; -w \u0026#34;numdone($JOBID,*)\u0026#34; matlab -singleCompThread -nodisplay -r \u0026#34;save_best_model($arg1,$arg2,$i)\u0026#34; fi done fi Other useful resources # To use Euler, you\u0026rsquo;ll find yourself googling a lot of bash commands. In addition, figuring out how vim works can also be overwhelming in the beginning. To ease the pain, here are a few nice cheat sheets:\nBash scripting cheat sheet Vim cheat sheet Happy computations ! 👾👾👾\n","date":"3 July 2019","externalUrl":null,"permalink":"/posts/eth-euler/","section":"Posts","summary":"\u003cdiv\n  \n    class=\"flex px-4 py-3 rounded-md bg-primary-100 dark:bg-primary-900\"\n  \n  \u003e\n  \u003cspan\n    \n      class=\"text-primary-400 ltr:pr-3 rtl:pl-3 flex items-center\"\n    \n    \u003e\n    \n\n  \u003cspan class=\"relative block icon\"\u003e\n    \u003csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"\u003e\u003cpath fill=\"currentColor\" d=\"M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z\"/\u003e\u003c/svg\u003e\n\n  \u003c/span\u003e\n\n\n  \u003c/span\u003e\n\n  \u003cspan\n    \n      class=\"dark:text-neutral-300\"\n    \n    \u003e\u003cstrong\u003e2024 Update\u003c/strong\u003e: Euler is now using Slurm instead of LSF. While this blog post can this be still useful, the LSF commands need to be translated into Slurm commands. See \u003ca\n  href=\"https://scicomp.ethz.ch/wiki/LSF_to_Slurm_quick_reference\"\n    target=\"_blank\"\n  \u003ethis quick reference\u003c/a\u003e\n.\u003c/span\u003e\n\u003c/div\u003e\n\n\u003cp\u003e🖍 \u003cem\u003eNota bene\u003c/em\u003e: You will need to be an ETH member to use Euler. However, this\npost might still be useful if you happen to be working on another cluster which\nuses the \u003ca\n  href=\"https://en.wikipedia.org/wiki/Platform_LSF\"\n    target=\"_blank\"\n  \u003eLSF\u003c/a\u003e\n  batch system. Also relevant: I am currently mainly using MATLAB to run my simulations, so you\u0026rsquo;ll find some MATLAB specific advice.\nFor Python specifics, check out \u003ca\n  href=\"https://scicomp.ethz.ch/wiki/Python\"\n    target=\"_blank\"\n  \u003ethis page\u003c/a\u003e\n.\u003c/p\u003e","title":"A beginner's guide to ETH's Euler","type":"posts"},{"content":"FreeSurfer is an open source software package for the analysis and visualization of structural and functional neuroimaging data. It is developed by the Laboratory for Computational Neuroimaging at the Athinoula A. Martinos Center for Biomedical Imaging . It\u0026rsquo;s a really useful tool that allows for automated processes as well as manual interventions, mainly through it\u0026rsquo;s GUI, Freeview.\nI started using FreeSurfer and Freeview last year and, albeit the documentation being quite thorough, I had a harder time navigating the website than I expected.\nSo here are a few tricks to make your handling FreeSurfer\u0026rsquo;s GUI, Freeview, easier and faster!\nStarting Freeview # You can start freeview by just typing freeview in your command line and then opening the files you want. Of course, you will be far better off if you write a small script with your usual calls.\nThe command options available for Freeview are:\nArgument Action -v load a volume file -l load a label file -dti load one or more dti volumes -f load a surface -w load waypoints I have the following script saved under my subjects/ folder:\nexport SUBJECT=\u0026#39;\u0026lt;subject name\u0026gt;\u0026#39; freeview -v \\ $SUBJECT/mri/T1.mgz \\ $SUBJECT/mri/wm.mgz \\ $SUBJECT/mri/brainmask.mgz \\ -f \\ $SUBJECT/surf/lh.white:edgecolor=blue \\ $SUBJECT/surf/lh.pial:edgecolor=yellow \\ $SUBJECT/surf/rh.white:edgecolor=blue \\ $SUBJECT/surf/rh.pial:edgecolor=yellow So, if I want to analyze, let\u0026rsquo;s say, subject bert\u0026rsquo;s images, I just open my freeview.sh script with a text editor and change \u0026lt;subject name\u0026gt; to bert (which is this subject\u0026rsquo;s folder name). Then, I can open a terminal, navigate to my subjects/ folder and type:\n./freeview.sh For more information on how to use the freeview command, type:\nfreeview --help You\u0026rsquo;ll get a list of the available sub-options to make the most out of your image visualization!\nAll right, we have opened Freeview and we\u0026rsquo;re ready to start interacting with the GUI!\nKeyboard shortcuts! # These will save you an amazing amount of time. I have been working with CentOs and a few shortcuts I have found by experimenting are:\nCommand Action Alt + N Navigate Tool Ctrl + E Recon Edit Tool Alt + E Voxel Edit Tool Ctrl + F Toggle all surfaces Alt + C Alternate between volumes/surfaces Ctrl + P Toggle left side menu Ctrl + T Point set edit Ctrl + R Reset View Alt + X Show sagital images Alt + Y Show axial images Alt + Z Show coronal images Alt + A/D Decrease/Increase opacity of currently highlighted volume Ctrl + D Hide brainmask Alt + F Toggle currently highlighted surface Alt + U Show cursor You\u0026rsquo;ll find other shortcuts under this link . I\u0026rsquo;ll copy the most useful ones here for convenience:\nCommand Action Ctrl + S Save Ctrl + Z Undo Ctrl + Q Exit Freeview Ctrl + O Load Volume Up/Down Arrow Keys or PageUp/PageDown Change slice Scroll or Drag-Right-Click Zoom In/Zoom Out Ctrl + Up/Down/Left/Right (arrow keys) Moving volume (Panning) Alt + V Toggle currently highlighted volume Shift-Drag Left Click Adjust Contrast/Brightness Zoom in at current location Ctrl-Left-Click (or scroll) Zoom out at current location Ctrl-Right-Click (or scroll) When you\u0026rsquo;re in Voxel/Recon/ROI edit mode:\nCommand Action Draw / Fill Left Click Erase / Erase Fill Shift+Left Click That concludes this short tutorial about Freeview! If you want to read/know more, the full Freeview Guide can be found here . Also, check out this cool Freeview demo .\n","date":"31 March 2019","externalUrl":null,"permalink":"/posts/freeview/","section":"Posts","summary":"\u003cp\u003e\u003ca\n  href=\"https://surfer.nmr.mgh.harvard.edu/\"\n    target=\"_blank\"\n  \u003eFreeSurfer\u003c/a\u003e\n is an open source software package for the analysis and visualization of structural and functional neuroimaging data. It is developed by the \u003ca\n  href=\"https://martinos.org/lab/lcn\"\n    target=\"_blank\"\n  \u003eLaboratory for Computational Neuroimaging\u003c/a\u003e\n at the \u003ca\n  href=\"https://martinos.org/\"\n    target=\"_blank\"\n  \u003eAthinoula A. Martinos Center for Biomedical Imaging\u003c/a\u003e\n.\nIt\u0026rsquo;s a really useful tool that allows for automated processes as well as manual interventions,\nmainly through it\u0026rsquo;s GUI, Freeview.\u003c/p\u003e\n\u003cp\u003eI started using FreeSurfer and Freeview  last year and, albeit the documentation being quite\nthorough, I had a harder time navigating the website than I expected.\u003c/p\u003e","title":"Freeview from FreeSurfer","type":"posts"},{"content":"One can sometimes feel very puzzled when watching a physician perform the neurological examination. I mean, what information is there to extract from a retracting big toe, from feet constantly a bit more apart from each other than they should be or even from an absent tendon reflex? How were these signs observed in the first place and how did we come to know how to interpret them?\nLet us focus, for example, on reflexes. A reflex is an involuntary movement in response to a stimulus. Reflexes in general represent a key part of the neurological examination because of their more objective nature and lesser dependency on patient cooperation. Actually, reflexes and their characteristics are crucial: in conjunction with other signs and symptoms and knowledge of the anatomy of the nervous system, the observer can localize the neurological lesion(s) with a surprising degree of precision\u0026hellip; before even resorting to CT or MRI imaging!\nDamme there are no pores (William Harvey) # The first description of a reflex action was presumably provided by René Descartes (1596-1650) in his book De homine (1662). Here, he describes an experiment in which a mock blow aimed at a person’s eyes would lead to prompt eye closure. He conjectured that this response was due to the so-called “animal spirits” that would travel throughout the body within a hollow nerve tube. Vision, or the sight of the approaching object, was considered a reflection of the animal spirits back to the brain and this is presumed to be where we get the concept of “reflex”: simply the abbreviation of “reflection”. Another example Descartes depicts in his posthumous book is that of a child drawing his (or her\u0026hellip;) foot away from a fire. In a very detailed and somewhat oddly mechanistic explanation, Descartes explains how the particles of the fire move the skin of the foot, thereby pulling a string attached on the other end to the pineal gland. This pulling movement opens a pore, thus releasing the animal spirits, that are now free to travel the body to cause the defensive muscle action of retreating the child’s foot from danger.\nAs bizarre as this pore-based explanation might nowadays sound, Descartes is actually describing the five components of what we call “the reflex arc” (Figure 1). To build up a reflex arc, we need:\nReceptors, able to detect a signal (for example: pain); A so-called (sensory) “afferent arm”, that carries the transformed signal to… an integrating center, which, when stimulated, activates… the (motor) efferent (with an “e”) arm, whose function is to transmit the signal to… the effector muscle, which will then carry out the involuntary action. Figure 1: A reflex arc. It took almost another century and a half for Galvani (1737-1798) to demonstrate, in an anonymous pamphlet, that the animal spirits were actually plain electricity. This caused a reorganization of thinking about how to approach the nervous system: it became more grounded in experiment, but a systematic and organized examination was still lacking. In fact, only until the late 1800s did the generation of Erb, Babinski and Gowers (among others) develop the neurological examination as we know it today.\nTypes of reflexes # The most commonly encountered reflexes are the myotatic (tendon) and cutaneous types. Most people are familiar with tendon reflexes (vide the classic Veet wax strips commercial ), but rubbing the skin also elicits superficial reflexes. A classic superficial reflex is the plantar reflex, whereby the sole of the foot is stimzulated with a blunt instrument. The reflex can take one of two forms. In healthy adults, the plantar reflex causes flexion of the hallux (aka “big toe”). An extension of the hallux, however, is known as the Babinski response or Babinski sign (Figure 2).\nFigure 2: The plantar reflex. This response exists as a normal primitive reflex in infants, but indicates lesion to the motor pathway in adults. More specifically, a Babinski response in adults points to a lesion in the first part of the motor pathway (Figure 3), where the upper (or first) motor neuron (of a total of two) lies.\nFigure 3: The motor pathway, also called pyramidal tract. Notice that the first motor neuron (depicted in yellow) extends from the cerebral cortex to the anterior horn of the spinal medulla. A lesion at any point along its long path (due to stroke, for instance) can produce the Babinski response. The Babinski extensor toe response was described by Joseph Félix Babinski to the Société de Biologie de Paris on February 22nd 1896. Babinski belonged to the generation that followed the legendary Jean-Marie Charcot. Charcot, a famous neurologist and professor of anatomical-pathology, became known for his méthode anatomo-clinique, i.e. careful and systematic correlations between clinical signs and neuropathological lesions. In using this strategy, Charcot succeeded, for instance, in distinguishing the different signs of Parkinson’s disease. He did not, however, rely much on the physical examination, and it is said that he rarely touched his patients. Babinski met Charcot in a medical competition, where he ended up being awarded a post in the latter’s service. Babinski hence arrived at the famous Hôpital de Salpêtrière in 1885, at the height of Charcot’s career. After his mentor’s death, Babinski, for political or nonpolitical reasons, distanced himself from Charcot in that he advocated the superior importance of the neurological examination in establishing a clinical diagnosis.\nBut, as I was saying, on February 22nd 1896, two and a half years after Charcot passed away, Babinski presented his “new” (more on these quotation marks later) sign to a lively crowd of physicians, physiologists, basic scientists and the like. At first, he described the sign as a response to painful stimuli but, in a subsequent communication, added that simply stroking or tickling the sole of the foot could also elicit this same reaction. He further correlated this reflex with a lesion in the pyramidal tract (remember Figure 3) and later included the fanning movement of the other toes in his description.\nInterestingly, he also focused on hysteria (a now obsolete diagnosis with a very interesting story to tell), just enough to demonstrate that the presence of the extensor response effectively excludes it. Indeed, although not the first to observe the extensor toe response in pyramidal tract lesions, Babinski is credited for its appropriate interpretation. As a matter of fact, medieval, Renaissance and baroque painters had already correctly represented the extensor toe response in infants.\n![madonna]img/null3.png#center \u0026ldquo;Figure 4: The Small Cowper Madonna, Raphael, circa 1505. Can you spot the celestial extensor toe?\u0026rdquo;)\nAfter Babinski’s first description, a great number of publications with modified methods to elicit the same extensor response emerged. Among them were Oppenheim (1858–1919), who proposed to stimulate the tibial surface in a downward movement and Gordon (1874 – 1953), who would squeeze the calf muscles of his patients.\nThat’s interesting, but what should I take home? # Aside from being instilled with a few more drops of neurophilia, I hope you now better understand how amazing reflexes actually are. Take a look again at their organized base-structure. Notice that the arc in Figure 1 does not involve the brain’s outer cortex, and this is true for other non-spinal reflexes. Hence, reflexes are often useful as a way to generate rapid action without the need to involve consciousness. Reflexes are the reason why you “automatically” remove your hand from a burning pan, why your pupils fastly constrict when exposed to more light, why you salivate when you set your eyes on that oh-so-tasty moussaka.\nUntil next time!\nReferences # Aminoff, M. J.. \u0026ldquo;Chapter 16: History of the development of the neurological examination\u0026rdquo; Handbook of Clinical Neurology Vol. 95, Elsevier, 2009. Descartes, R., L’Homme de René Descartes et un Traité de la formation du fœtus, Charles Angot, 1664. Goetz, C. G., \u0026ldquo;History of the extensor plantar response: Babinski and Chaddock signs.\u0026rdquo; Seminars in Neurology, 22(4), 391–398, 2002. Nicholl, D. J., \u0026amp; Appleton, J. P., \u0026ldquo;Clinical neurology: why this still matters in the 21st century.\u0026rdquo; Journal of Neurology, Neurosurgery \u0026amp; Psychiatry, 2015. Patten, B. M., \u0026ldquo;The history of the neurological examination . Part 1 : Ancient and pre ‐ modern history ‐ 3000 BC to AD 1850.\u0026rdquo; Journal of the History of the Neurosciences : Basic and Clinical Perspectives, 37–41, 1992. Steinberg, D. A., \u0026ldquo;Scientific neurology and the history of the clinical examination of selected motor cranial nerves.\u0026rdquo; Seminars in Neurology, 22(4), 349–355, 2002. ","date":"3 April 2018","externalUrl":null,"permalink":"/posts/the-art-of-foot-tickling/","section":"Posts","summary":"\u003cp\u003eOne can sometimes feel very puzzled when watching a physician perform the neurological examination. I mean, what information is there to extract from a retracting big toe, from feet constantly a bit more apart from each other than they should be or even from an absent tendon reflex? How were these signs observed in the first place and how did we come to know how to interpret them?\u003c/p\u003e\n\u003cp\u003eLet us focus, for example, on reflexes. A reflex is an involuntary movement in response to a stimulus. Reflexes in general represent a key part of the neurological examination because of their more objective nature and lesser dependency on patient cooperation. Actually, reflexes and their characteristics are crucial: in conjunction with other signs and symptoms and knowledge of the anatomy of the nervous system, the observer can localize the neurological lesion(s) with a surprising degree of precision\u0026hellip; before even resorting to CT or MRI imaging!\u003c/p\u003e","title":"The Art of Foot Tickling","type":"posts"},{"content":" ","externalUrl":null,"permalink":"/posts/predicting-csd/","section":"Posts","summary":"\u003c!-- +++\ntitle = \"Predicting CSD\"\nsubtitle = \"\"\n\n# Math mode needs to be cool\nmarkup = \"mmark\"\n\n# Add a summary to display on homepage (optional).\nsummary = \"\"\n\ndate = 2019-08-03T19:31:11+02:00\ndraft = true\n\n# Authors. Comma separated list, e.g. `[\"Bob Smith\", \"David Jones\"]`.\nauthors = []\n\n# Is this a featured post? (true/false)\nfeatured = false\n\n# Tags and categories\n# For example, use `tags = []` for no tags, or the form `tags = [\"A Tag\", \"Another Tag\"]` for one or more tags.\ntags = []\ncategories = []\n\n# Projects (optional).\n#   Associate this post with one or more of your projects.\n#   Simply enter your project's folder or file name without extension.\n#   E.g. `projects = [\"deep-learning\"]` references\n#   `content/project/deep-learning/index.md`.\n#   Otherwise, set `projects = []`.\n# projects = [\"internal-project\"]\n\n# Featured image\n# To use, add an image named `featured.jpg/png` to your page's folder.\n[image]\n  # Caption (optional)\n  caption = \"\"\n\n  # Focal point (optional)\n  # Options: Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight\n  focal_point = \"\"\n+++\n\n## What are CSD??\n\nThe cross power spectral density (or cross spectral density) $S_{xy}(\\omega)$\nbetween two signals $x(t)$ and $y(t)$ can be defined as the Fourier transform of\nthese series' cross-correlation function $R\\_{xy}(\\\\tau)$:\n\n$$S_{xy}(\\omega)=\\int_{-\\infty}^{\\infty}R_{xy}(\\tau)e^{-j \\omega\\tau}d\\tau\n= \\int_{-\\infty}^{\\infty} \\left[ \\int_{-\\infty}^{\\infty} x(t)^* \\cdot y(t+\\tau) dt \\right] e^{-j \\omega t} d\\tau$$\n\nWhen $x(t)=y(t)$, we talk of power spectral densities.\n\n## What's a Volterra series?\nA Volterra series is similar to a Taylor series. They differ in that the Taylor series\ncan model non-linear systems with no memory, whereas the Volterra series can\ncapture this memory effect.\n\nA continuous time-invariant system with $x(t)$ as input and $y(t)$ as output can be expanded in Volterra series as:\n\n $$y(t) = h_{0}+\\sum_{n=1}^{N}{\\int_{a}^{b}\\cdots\\int_{a}^{b} {h_{n}(\\tau_{1},.\\,.\\,,\\tau_{n})\\prod^{n}_{j=1}{x(t - \\tau_{j}) d\\tau_{j}}}}$$\n\n Looks complicated, but you understand what is going on if you start the expansion yourself:\n\n $$y(t) = h_{0}+{\\int_{a}^{b}{h_{1}(\\tau_{1})\\cdot{x(t - \\tau_{1}) d\\tau_{1}}}} + {\\int_{a}^{b} \\int_{a}^{b} {h_{2}(\\tau_{1}, \\tau_{2})\\cdot{x(t - \\tau_{1})\\cdot x(t - \\tau_{2}) d\\tau_{1}d\\tau_{2}}}} ...$$\n\n The function $$h_{n}(\\tau_{1},.\\,.\\,,\\tau_{n})$$ is called the $n$-th order Volterra kernel,\n It can be regarded as a higher-order impulse response of the system.\n\n Issues:\n - By looking at the Volterra series, you don't know the order of your system\n - Individual Volterra operators (H, different from kernels h!) are not independent --\u003e","title":"","type":"posts"},{"content":"Physician, computational neuroscientist, offshore sailor, and newly-minted mother. I\u0026rsquo;m a curious, avid learner (and major nerd) who is happiest when exploring.\nExploration portfolio 🏂 # Previous Nextsads 🎓 Work background # Doctoral studies @Translational Neuromodeling Unit , UZH \u0026amp; ETH Zurich, Switzerland 🇨🇭 (2020-2025) Master\u0026rsquo;s degree in Neural Systems and Computation @UZH \u0026amp; ETH Zurich, Switzerland (2018-2019) Neurology resident @MEDIAN Klinik Berlin Kladow , Berlin, Germany 🇩🇪 (2016-2018) Medical degree @NOVA Medical School , Lisbon, Portugal 🇵🇹 (2010-2016) ⛵ Sailing # I\u0026rsquo;m an experienced sailor with internationally recognized Royal Yachting Association certifications (see below), adept in handling both monohulls and multihulls. I have 15,000 nm sailing experience under my belt, including offshore and ocean sailing:\nProficient in crew management, competently overseeing teams ranging from 2 to 15 individuals. Qualified skipper focused on creating a relaxed, controlled, and safe atmosphere. Author of She Sails . Certifications:\nRYA Marine Radio Certification RYA/MCA Shorebased Course Coastal Skipper \u0026amp; Yachmaster Offshore RYA Coastal Skipper RYA Day Skipper RYA Competent Crew Additional training:\nEngine Maintenance Offshore Maintenance Electrical Systems Harbor Maneuvers ","externalUrl":null,"permalink":"/about/","section":"Bom dia ☀️","summary":"\u003cp\u003ePhysician, computational neuroscientist, offshore sailor, and newly-minted mother. I\u0026rsquo;m a curious, avid learner (and major nerd) who is happiest when exploring.\u003c/p\u003e\n\n\u003ch2 class=\"relative group\"\u003eExploration portfolio 🏂 \n    \u003cdiv id=\"exploration-portfolio-\" class=\"anchor\"\u003e\u003c/div\u003e\n    \n    \u003cspan\n        class=\"absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\"\u003e\n        \u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline\" href=\"#exploration-portfolio-\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\n    \u003c/span\u003e        \n    \n\u003c/h2\u003e\n\n\n\n\n\n\n\n\n\n\n\n  \n    \n  \n\n\n\n\u003cdiv id=\"carousel-2bc053111729a74bce2ff033e7cdfe90\" class=\"relative\" data-twe-carousel-init data-twe-ride=\"carousel\"\u003e\n  \u003cdiv\n    class=\"absolute right-0 bottom-0 left-0 z-[2] mx-[15%] mb-10 flex list-none justify-center p-0\"\n    data-twe-carousel-indicators\u003e\n    \n    \n      \u003cbutton\n        type=\"button\"\n        data-twe-target=\"#carousel-2bc053111729a74bce2ff033e7cdfe90\"\n        data-twe-slide-to=\"0\"\n        data-twe-carousel-active aria-current=\"true\"\n        class=\"mx-[3px] box-content h-[3px] w-[30px] flex-initial cursor-pointer border-0 border-y-[10px] border-solid border-transparent bg-neutral bg-clip-padding p-0 -indent-[999px] opacity-50 transition-opacity duration-[600ms] ease-[cubic-bezier(0.25,0.1,0.25,1.0)] motion-reduce:transition-none\"\n        aria-label=\"Slide 0\"\u003e\u003c/button\u003e\n\n      \n    \n      \u003cbutton\n        type=\"button\"\n        data-twe-target=\"#carousel-2bc053111729a74bce2ff033e7cdfe90\"\n        data-twe-slide-to=\"1\"\n        \n        class=\"mx-[3px] box-content h-[3px] w-[30px] flex-initial cursor-pointer border-0 border-y-[10px] border-solid border-transparent bg-neutral bg-clip-padding p-0 -indent-[999px] opacity-50 transition-opacity duration-[600ms] ease-[cubic-bezier(0.25,0.1,0.25,1.0)] motion-reduce:transition-none\"\n        aria-label=\"Slide 1\"\u003e\u003c/button\u003e\n\n      \n    \n      \u003cbutton\n        type=\"button\"\n        data-twe-target=\"#carousel-2bc053111729a74bce2ff033e7cdfe90\"\n        data-twe-slide-to=\"2\"\n        \n        class=\"mx-[3px] box-content h-[3px] w-[30px] flex-initial cursor-pointer border-0 border-y-[10px] border-solid border-transparent bg-neutral bg-clip-padding p-0 -indent-[999px] opacity-50 transition-opacity duration-[600ms] ease-[cubic-bezier(0.25,0.1,0.25,1.0)] motion-reduce:transition-none\"\n        aria-label=\"Slide 2\"\u003e\u003c/button\u003e\n\n      \n    \n      \u003cbutton\n        type=\"button\"\n        data-twe-target=\"#carousel-2bc053111729a74bce2ff033e7cdfe90\"\n        data-twe-slide-to=\"3\"\n        \n        class=\"mx-[3px] box-content h-[3px] w-[30px] flex-initial cursor-pointer border-0 border-y-[10px] border-solid border-transparent bg-neutral bg-clip-padding p-0 -indent-[999px] opacity-50 transition-opacity duration-[600ms] ease-[cubic-bezier(0.25,0.1,0.25,1.0)] motion-reduce:transition-none\"\n        aria-label=\"Slide 3\"\u003e\u003c/button\u003e\n\n      \n    \n      \u003cbutton\n        type=\"button\"\n        data-twe-target=\"#carousel-2bc053111729a74bce2ff033e7cdfe90\"\n        data-twe-slide-to=\"4\"\n        \n        class=\"mx-[3px] box-content h-[3px] w-[30px] flex-initial cursor-pointer border-0 border-y-[10px] border-solid border-transparent bg-neutral bg-clip-padding p-0 -indent-[999px] opacity-50 transition-opacity duration-[600ms] ease-[cubic-bezier(0.25,0.1,0.25,1.0)] motion-reduce:transition-none\"\n        aria-label=\"Slide 4\"\u003e\u003c/button\u003e\n\n      \n    \n      \u003cbutton\n        type=\"button\"\n        data-twe-target=\"#carousel-2bc053111729a74bce2ff033e7cdfe90\"\n        data-twe-slide-to=\"5\"\n        \n        class=\"mx-[3px] box-content h-[3px] w-[30px] flex-initial cursor-pointer border-0 border-y-[10px] border-solid border-transparent bg-neutral bg-clip-padding p-0 -indent-[999px] opacity-50 transition-opacity duration-[600ms] ease-[cubic-bezier(0.25,0.1,0.25,1.0)] motion-reduce:transition-none\"\n        aria-label=\"Slide 5\"\u003e\u003c/button\u003e\n\n      \n    \n\n  \u003c/div\u003e\n  \u003cdiv class=\"relative w-full overflow-hidden after:clear-both after:block after:content-['']\"\u003e\n    \n    \n      \u003cdiv\n        class=\"relative float-left -mr-[100%]  w-full transition-transform duration-[2000ms] ease-in-out motion-reduce:transition-none\"\n        data-twe-carousel-item\n        data-twe-carousel-active\u003e\n        \u003cdiv class=\"ratio-16-9 single_hero_background\"\u003e\n          \u003cimg\n            src=\"/about/img/1.jpg\"\n            class=\"block absolute top-0 object-cover w-full h-full nozoom\"\n            alt=\"carousel image 0\"\u003e\n        \u003c/div\u003e\n      \u003c/div\u003e\n\n      \n    \n      \u003cdiv\n        class=\"relative float-left -mr-[100%] \n          hidden\n         w-full transition-transform duration-[2000ms] ease-in-out motion-reduce:transition-none\"\n        data-twe-carousel-item\n        \u003e\n        \u003cdiv class=\"ratio-16-9 single_hero_background\"\u003e\n          \u003cimg\n            src=\"/about/img/2.jpg\"\n            class=\"block absolute top-0 object-cover w-full h-full nozoom\"\n            alt=\"carousel image 1\"\u003e\n        \u003c/div\u003e\n      \u003c/div\u003e\n\n      \n    \n      \u003cdiv\n        class=\"relative float-left -mr-[100%] \n          hidden\n         w-full transition-transform duration-[2000ms] ease-in-out motion-reduce:transition-none\"\n        data-twe-carousel-item\n        \u003e\n        \u003cdiv class=\"ratio-16-9 single_hero_background\"\u003e\n          \u003cimg\n            src=\"/about/img/3.jpg\"\n            class=\"block absolute top-0 object-cover w-full h-full nozoom\"\n            alt=\"carousel image 2\"\u003e\n        \u003c/div\u003e\n      \u003c/div\u003e\n\n      \n    \n      \u003cdiv\n        class=\"relative float-left -mr-[100%] \n          hidden\n         w-full transition-transform duration-[2000ms] ease-in-out motion-reduce:transition-none\"\n        data-twe-carousel-item\n        \u003e\n        \u003cdiv class=\"ratio-16-9 single_hero_background\"\u003e\n          \u003cimg\n            src=\"/about/img/4.jpg\"\n            class=\"block absolute top-0 object-cover w-full h-full nozoom\"\n            alt=\"carousel image 3\"\u003e\n        \u003c/div\u003e\n      \u003c/div\u003e\n\n      \n    \n      \u003cdiv\n        class=\"relative float-left -mr-[100%] \n          hidden\n         w-full transition-transform duration-[2000ms] ease-in-out motion-reduce:transition-none\"\n        data-twe-carousel-item\n        \u003e\n        \u003cdiv class=\"ratio-16-9 single_hero_background\"\u003e\n          \u003cimg\n            src=\"/about/img/5.jpg\"\n            class=\"block absolute top-0 object-cover w-full h-full nozoom\"\n            alt=\"carousel image 4\"\u003e\n        \u003c/div\u003e\n      \u003c/div\u003e\n\n      \n    \n      \u003cdiv\n        class=\"relative float-left -mr-[100%] \n          hidden\n         w-full transition-transform duration-[2000ms] ease-in-out motion-reduce:transition-none\"\n        data-twe-carousel-item\n        \u003e\n        \u003cdiv class=\"ratio-16-9 single_hero_background\"\u003e\n          \u003cimg\n            src=\"/about/img/6.jpg\"\n            class=\"block absolute top-0 object-cover w-full h-full nozoom\"\n            alt=\"carousel image 5\"\u003e\n        \u003c/div\u003e\n      \u003c/div\u003e\n\n      \n    \n\n  \u003c/div\u003e\n  \u003cbutton\n    class=\"absolute top-0 bottom-0 left-0 z-[2] flex w-[15%] items-center justify-center border-0 bg-none p-0 text-center text-white opacity-50 transition-opacity duration-150 ease-[cubic-bezier(0.25,0.1,0.25,1.0)] hover:text-white hover:no-underline hover:opacity-90 hover:outline-none focus:text-white focus:no-underline focus:opacity-90 focus:outline-none motion-reduce:transition-none\"\n    type=\"button\"\n    data-twe-target=\"#carousel-2bc053111729a74bce2ff033e7cdfe90\"\n    data-twe-slide=\"prev\"\u003e\n    \u003cspan class=\"inline-block h-8 w-8\"\u003e\n      \u003csvg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        fill=\"none\"\n        viewBox=\"0 0 24 24\"\n        stroke-width=\"4.5\"\n        stroke=\"currentColor\"\n        class=\"h-6 w-6\"\u003e\n        \u003cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.75 19.5L8.25 12l7.5-7.5\" /\u003e\n      \u003c/svg\u003e\n    \u003c/span\u003e\n    \u003cspan\n      class=\"!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]\"\n      \u003ePrevious\u003c/span\n    \u003e\n  \u003c/button\u003e\n  \u003cbutton\n    class=\"absolute top-0 bottom-0 right-0 z-[1] flex w-[15%] items-center justify-center border-0 bg-none p-0 text-center text-white opacity-50 transition-opacity duration-150 ease-[cubic-bezier(0.25,0.1,0.25,1.0)] hover:text-white hover:no-underline hover:opacity-90 hover:outline-none focus:text-white focus:no-underline focus:opacity-90 focus:outline-none motion-reduce:transition-none\"\n    type=\"button\"\n    data-twe-target=\"#carousel-2bc053111729a74bce2ff033e7cdfe90\"\n    data-twe-slide=\"next\"\u003e\n    \u003cspan class=\"inline-block h-8 w-8\"\u003e\n      \u003csvg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        fill=\"none\"\n        viewBox=\"0 0 24 24\"\n        stroke-width=\"4.5\"\n        stroke=\"currentColor\"\n        class=\"h-6 w-6\"\u003e\n        \u003cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 4.5l7.5 7.5-7.5 7.5\" /\u003e\n      \u003c/svg\u003e\n    \u003c/span\u003e\n    \u003cspan\n      class=\"!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]\"\n      \u003eNextsads\u003c/span\n    \u003e\n  \u003c/button\u003e\n\u003c/div\u003e\n\n\n\u003ch2 class=\"relative group\"\u003e🎓 Work background \n    \u003cdiv id=\"-work-background\" class=\"anchor\"\u003e\u003c/div\u003e\n    \n    \u003cspan\n        class=\"absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\"\u003e\n        \u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline\" href=\"#-work-background\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\n    \u003c/span\u003e        \n    \n\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDoctoral studies @\u003ca\n  href=\"https://www.tnu.ethz.ch/\"\n    target=\"_blank\"\n  \u003eTranslational Neuromodeling Unit\u003c/a\u003e\n, UZH \u0026amp; ETH Zurich, Switzerland 🇨🇭 (2020-2025)\u003c/li\u003e\n\u003cli\u003eMaster\u0026rsquo;s degree in \u003ca\n  href=\"https://www.nsc.uzh.ch/en.html\"\n    target=\"_blank\"\n  \u003eNeural Systems and Computation\u003c/a\u003e\n @UZH \u0026amp; ETH Zurich, Switzerland (2018-2019)\u003c/li\u003e\n\u003cli\u003eNeurology resident @\u003ca\n  href=\"https://www.median-kliniken.de/de/klinik-berlin-kladow/\"\n    target=\"_blank\"\n  \u003eMEDIAN Klinik Berlin Kladow\u003c/a\u003e\n, Berlin, Germany 🇩🇪 (2016-2018)\u003c/li\u003e\n\u003cli\u003eMedical degree @\u003ca\n  href=\"https://www.nms.unl.pt/en-us/faculty/about-us/nova-medical-school\"\n    target=\"_blank\"\n  \u003eNOVA Medical School\u003c/a\u003e\n, Lisbon, Portugal 🇵🇹 (2010-2016)\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 class=\"relative group\"\u003e⛵ Sailing \n    \u003cdiv id=\"-sailing\" class=\"anchor\"\u003e\u003c/div\u003e\n    \n    \u003cspan\n        class=\"absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\"\u003e\n        \u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline\" href=\"#-sailing\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\n    \u003c/span\u003e        \n    \n\u003c/h2\u003e\n\u003cp\u003eI\u0026rsquo;m an experienced sailor with internationally recognized \u003ca\n  href=\"https://www.rya.org.uk/\"\n    target=\"_blank\"\n  \u003eRoyal Yachting Association\u003c/a\u003e\n certifications (see below), adept in handling both monohulls and multihulls. I have 15,000 nm sailing experience under my belt, including offshore and ocean sailing:\u003c/p\u003e","title":"About me","type":"page"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"Besides papers, I love reading books. Here is a selection of books I love.\n","externalUrl":null,"permalink":"/books/","section":"Bom dia ☀️","summary":"\u003cp\u003eBesides papers, I love reading books. Here is a selection of books I love.\u003c/p\u003e\n\u003cdiv id=\"gallery-c182ecca1ad171eba770fa80cf0a3f69\" class=\"gallery\"\u003e\n  \n  \n    \n    \n    \n    \n    \n    \n    \n    \n  \u003cimg src=\"/books/img/ryan-north.jpg\" class=\"grid-w33\" /\u003e\n  \u003cimg src=\"/books/img/imposter-handbook.jpg\" class=\"grid-w33\" /\u003e\n  \u003cimg src=\"/books/img/hpmor.jpg\" class=\"grid-w33\" /\u003e\n  \u003cimg src=\"/books/img/romeo-and-or-juliet.jpg\" class=\"grid-w33\" /\u003e\n  \u003cimg src=\"/books/img/schnitt.jpg\" class=\"grid-w33\" /\u003e\n  \u003cimg src=\"/books/img/atomic-habits.jpg\" class=\"grid-w33\" /\u003e\n  \u003cimg src=\"/books/img/bad-science.jpg\" class=\"grid-w33\" /\u003e\n  \u003cimg src=\"/books/img/bad-pharma.jpg\" class=\"grid-w33\" /\u003e\n\n\u003c/div\u003e","title":"Reading","type":"page"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":" Things I\u0026rsquo;ve built and tools that make my work (and life) a little better ❤️. 🔬 Things made by me # 📇 Work Code Review for Mental Health Research: A custom GPT that performs structured code review using the framework from Pereira, Galioulline et al., \u0026ldquo;Structured Code Review in Mental Health Research\u0026rdquo; (2025) . 🎭 Leisure Glittermap , a map + directory of burlesque \u0026amp; cabaret events across Europe, listing festivals, shows, and (the big one for performers) open calls. 🛠️ Amazing things made by others # Research # BioRender : my go-to tool for making publication-quality scientific figures and illustrations\u0026hellip; since 2018. Templates are great for getting started, and the icon library covers most of what you\u0026rsquo;d need for neuroscience and biomedical work.\nScite.ai : A smarter citation tool — instead of just showing you where a paper was cited, it tells you how: whether it was supported, contrasted, or just mentioned. Invaluable for literature reviews and sanity-checking a paper\u0026rsquo;s reception.\nZotero : a fantastic free and open-source citation manager (with a MS Word plug-in, in case that\u0026rsquo;s your cup of tea).\nDevelopment \u0026amp; Productivity # VS Code : My main editor.\nTodoist : Task manager with excellent template support. I rely heavily on project templates for recurring workflows.\nJustFocus : A minimal Pomodoro timer for Mac. No frills, does exactly what it says. And you can add your favorite quotes.\nInbox When Ready : handy extension for Gmail users. Hides your inbox from you so don\u0026rsquo;t sign in, immediately get distracted and forget why you signed in the first place.\n","externalUrl":null,"permalink":"/tools/","section":"Bom dia ☀️","summary":"\u003cdiv class=\"lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl\"\u003e\n  Things I\u0026rsquo;ve built and tools that make my work (and life) a little better ❤️.\n\u003c/div\u003e\n\n\n\u003ch2 class=\"relative group\"\u003e🔬 Things made by me \n    \u003cdiv id=\"-things-made-by-me\" class=\"anchor\"\u003e\u003c/div\u003e\n    \n    \u003cspan\n        class=\"absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\"\u003e\n        \u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline\" href=\"#-things-made-by-me\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\n    \u003c/span\u003e        \n    \n\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e📇 Work\n\u003cul\u003e\n\u003cli\u003eCode Review for Mental Health Research: A \u003ca\n  href=\"https://chatgpt.com/g/g-6a3be6f2b3208191ba92efdbb7cc6e09-code-review-for-mental-health-research\"\n    target=\"_blank\"\n  \u003ecustom GPT\u003c/a\u003e\n that performs structured code review using the framework from \u003ca\n  href=\"https://www.preprints.org/manuscript/202510.0133\"\n    target=\"_blank\"\n  \u003ePereira, Galioulline et al., \u0026ldquo;Structured Code Review in Mental Health Research\u0026rdquo; (2025)\u003c/a\u003e\n.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e🎭 Leisure\n\u003cul\u003e\n\u003cli\u003e\u003ca\n  href=\"https://glittermap.io/\"\n    target=\"_blank\"\n  \u003eGlittermap\u003c/a\u003e\n, a map + directory of burlesque \u0026amp; cabaret events across Europe, listing festivals, shows, and (the big one for performers) open calls.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2 class=\"relative group\"\u003e🛠️ Amazing things made by others \n    \u003cdiv id=\"-amazing-things-made-by-others\" class=\"anchor\"\u003e\u003c/div\u003e\n    \n    \u003cspan\n        class=\"absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\"\u003e\n        \u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline\" href=\"#-amazing-things-made-by-others\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\n    \u003c/span\u003e        \n    \n\u003c/h2\u003e\n\n\u003ch3 class=\"relative group\"\u003eResearch \n    \u003cdiv id=\"research\" class=\"anchor\"\u003e\u003c/div\u003e\n    \n    \u003cspan\n        class=\"absolute top-0 w-6 transition-opacity opacity-0 ltr:-left-6 rtl:-right-6 not-prose group-hover:opacity-100\"\u003e\n        \u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700 !no-underline\" href=\"#research\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\n    \u003c/span\u003e        \n    \n\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca\n  href=\"https://www.biorender.com/\"\n    target=\"_blank\"\n  \u003eBioRender\u003c/a\u003e\n: my go-to tool for making publication-quality scientific figures and illustrations\u0026hellip; since 2018. Templates are great for getting started, and the icon library covers most of what you\u0026rsquo;d need for neuroscience and biomedical work.\u003c/p\u003e","title":"Tools","type":"page"}]