<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Science | Ville Langén</title><link>https://villelangen.com/tags/science/</link><atom:link href="https://villelangen.com/tags/science/index.xml" rel="self" type="application/rss+xml"/><description>Science</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Fri, 11 Jul 2025 00:00:00 +0000</lastBuildDate><image><url>https://villelangen.com/media/icon_hu7353780716416406245.png</url><title>Science</title><link>https://villelangen.com/tags/science/</link></image><item><title>How to Publish Analyses on Zenodo</title><link>https://villelangen.com/projects/zenodo_publishing_guide/</link><pubDate>Fri, 11 Jul 2025 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/zenodo_publishing_guide/</guid><description/></item><item><title>How to Build a Zero-Cost Academic Homepage Using Open-Source Tools</title><link>https://villelangen.com/projects/academic_website_tutorial/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/academic_website_tutorial/</guid><description/></item><item><title>Writing GitBooks Tutorial</title><link>https://villelangen.com/projects/gitbook_tutorial/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/gitbook_tutorial/</guid><description/></item><item><title>GitHub Without Tears: From Zero to Push in Minutes</title><link>https://villelangen.com/projects/github_basics/</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/github_basics/</guid><description/></item><item><title>How to Run Macros in Word</title><link>https://villelangen.com/projects/how-to-run-macros-in-word/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/how-to-run-macros-in-word/</guid><description/></item><item><title>Introduction to Echocardiography</title><link>https://villelangen.com/projects/echocardiography/</link><pubDate>Tue, 17 Dec 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/echocardiography/</guid><description/></item><item><title>AffiliWizard: Author-Affiliation Formatting Tool</title><link>https://villelangen.com/dev-work/affiliwizard/</link><pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/dev-work/affiliwizard/</guid><description>&lt;p>&lt;strong>AffiliWizard v1.0.0&lt;/strong> is a lightweight GUI tool created by Ville Langén, designed to solve a common problem in academic writing: formatting author-affiliation lists with proper numbering and structure.&lt;/p>
&lt;h3 id="the-problem">The Problem&lt;/h3>
&lt;p>When writing academic papers with multiple authors from different institutions, creating a properly formatted author-affiliation list can be tedious and error-prone. You often need to:&lt;/p>
&lt;ul>
&lt;li>Number affiliations sequentially&lt;/li>
&lt;li>Match authors to their respective institutions&lt;/li>
&lt;li>Format everything consistently&lt;/li>
&lt;li>Export to various formats for different journals&lt;/li>
&lt;/ul>
&lt;h3 id="the-solution">The Solution&lt;/h3>
&lt;p>AffiliWizard streamlines this process with a simple, intuitive interface that transforms your Excel data into professionally formatted author lists.&lt;/p>
&lt;h3 id="key-features">Key Features&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Simple Copy-Paste Interface&lt;/strong>: Copy data directly from Excel spreadsheets&lt;/li>
&lt;li>&lt;strong>Automatic Numbering&lt;/strong>: Intelligently assigns superscript numbers to affiliations&lt;/li>
&lt;li>&lt;strong>Multiple Export Formats&lt;/strong>: Save as .docx, .html, or plain text&lt;/li>
&lt;li>&lt;strong>Cross-Platform&lt;/strong>: Available for macOS, Windows, and web browsers&lt;/li>
&lt;li>&lt;strong>No Installation Required&lt;/strong>: Use the online version instantly&lt;/li>
&lt;/ul>
&lt;h3 id="how-to-use">How to Use&lt;/h3>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Prepare Your Data&lt;/strong>: Organize your author-affiliation data in Excel with columns for:&lt;/p>
&lt;ul>
&lt;li>Author Name (including degrees/titles)&lt;/li>
&lt;li>Affiliation 1&lt;/li>
&lt;li>Affiliation 2 (optional)&lt;/li>
&lt;li>Additional affiliations as needed&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Copy and Paste&lt;/strong>: Select and copy your data from Excel, then paste it into AffiliWizard&amp;rsquo;s text box&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Export&lt;/strong>: Choose your preferred format (.docx, HTML, or Plain Text) and save&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="input-format-example">Input Format Example&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">Author Name | Affiliation 1 | Affiliation 2
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">John Doe, MD | Bogus Institute, CA, USA | Example Institute, TS, USA
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">Jane Doe, MD | Sample University, TX, USA |
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="sample-output-html-format">Sample Output (HTML Format)&lt;/h3>
&lt;p>&lt;strong>Authors:&lt;/strong>
John Doe, MD&lt;sup>1,2&lt;/sup>, Jane Doe, MD&lt;sup>3&lt;/sup>&lt;/p>
&lt;p>&lt;strong>Affiliations:&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>Bogus Institute, CA, USA&lt;/li>
&lt;li>Example Institute, TS, USA&lt;/li>
&lt;li>Sample University, TX, USA&lt;/li>
&lt;/ol>
&lt;h3 id="download-options">Download Options&lt;/h3>
&lt;p>&lt;strong>Desktop Applications:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>macOS Apple Silicon&lt;/strong>: &lt;a href="https://github.com/vljlangen/affiliwizard/releases" target="_blank" rel="noopener">AffiliWizard-macOS-arm64.dmg&lt;/a>&lt;/li>
&lt;li>&lt;strong>Windows&lt;/strong>: &lt;a href="https://github.com/vljlangen/affiliwizard/releases" target="_blank" rel="noopener">AffiliWizard.exe&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Online Version:&lt;/strong>
For immediate use without downloads: &lt;a href="https://affiliwizard.netlify.app/" target="_blank" rel="noopener">https://affiliwizard.netlify.app/&lt;/a>&lt;/p>
&lt;h3 id="for-linux-users">For Linux Users&lt;/h3>
&lt;p>Linux users can build AffiliWizard from source:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Install Python 3&lt;/strong> (recommended 3.8+)&lt;/li>
&lt;li>&lt;strong>Set up virtual environment&lt;/strong>:
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">python3 -m venv venv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> venv/bin/activate
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip install -r requirements.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>&lt;strong>Run directly&lt;/strong>:
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">python AffiliWizard.py
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;h3 id="technical-details">Technical Details&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Built with&lt;/strong>: Python and tkinter for the GUI&lt;/li>
&lt;li>&lt;strong>License&lt;/strong>: MIT License - free to use and modify&lt;/li>
&lt;li>&lt;strong>Dependencies&lt;/strong>: Minimal Python libraries for maximum compatibility&lt;/li>
&lt;li>&lt;strong>File Size&lt;/strong>: Lightweight application under 10MB&lt;/li>
&lt;/ul>
&lt;h3 id="use-cases">Use Cases&lt;/h3>
&lt;p>Perfect for:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Academic researchers&lt;/strong> preparing manuscripts&lt;/li>
&lt;li>&lt;strong>Journal editors&lt;/strong> formatting submission requirements&lt;/li>
&lt;li>&lt;strong>Conference organizers&lt;/strong> creating program listings&lt;/li>
&lt;li>&lt;strong>Grant applications&lt;/strong> with multiple institutional collaborators&lt;/li>
&lt;/ul>
&lt;h3 id="development--support">Development &amp;amp; Support&lt;/h3>
&lt;p>AffiliWizard is actively maintained and open source. Contributions, bug reports, and feature requests are welcome on the &lt;a href="https://github.com/vljlangen/affiliwizard" target="_blank" rel="noopener">GitHub repository&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Questions or issues?&lt;/strong> Feel free to reach out through the project&amp;rsquo;s GitHub issues page.&lt;/p>
&lt;h3 id="why-affiliwizard">Why AffiliWizard?&lt;/h3>
&lt;p>In academic writing, the little details matter. AffiliWizard ensures your author-affiliation formatting is:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Consistent&lt;/strong> across all your publications&lt;/li>
&lt;li>&lt;strong>Professional&lt;/strong> and journal-ready&lt;/li>
&lt;li>&lt;strong>Error-free&lt;/strong> with automatic numbering&lt;/li>
&lt;li>&lt;strong>Time-saving&lt;/strong> with streamlined workflow&lt;/li>
&lt;/ul>
&lt;p>Transform your author-affiliation formatting from a tedious task into a one-click solution with AffiliWizard!&lt;/p></description></item><item><title>atctools: R Package for ATC Code Matching and Validation</title><link>https://villelangen.com/dev-work/atctools/</link><pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/dev-work/atctools/</guid><description>&lt;p>&lt;strong>atctools&lt;/strong> is an R package created by Ville Langén that facilitates Anatomical Therapeutic Chemical (ATC) matching and ensures the integrity of ATC data in pharmaceutical datasets. This specialized tool is essential for pharmaceutical research, drug safety studies, and healthcare data analysis.&lt;/p>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>The atctools package provides comprehensive tools for working with ATC codes, which are used worldwide to classify drugs according to the organ or system on which they act and their therapeutic, pharmacological, and chemical properties. The package bridges the gap between drug names and their standardized ATC classifications.&lt;/p>
&lt;h2 id="key-features">Key Features&lt;/h2>
&lt;h3 id="-atc-matching-functions">🔍 &lt;strong>ATC Matching Functions&lt;/strong>&lt;/h3>
&lt;p>&lt;strong>Advanced drug name matching&lt;/strong> using sophisticated algorithms including Levenshtein distance for fuzzy matching, ensuring accurate identification even with spelling variations or formatting differences.&lt;/p>
&lt;h3 id="-atc-code-matching">🏷️ &lt;strong>ATC Code Matching&lt;/strong>&lt;/h3>
&lt;p>&lt;strong>Direct ATC-to-drug name matching&lt;/strong> for reverse lookups and data verification workflows.&lt;/p>
&lt;h3 id="-atc-data-integrity-checks">✅ &lt;strong>ATC Data Integrity Checks&lt;/strong>&lt;/h3>
&lt;p>&lt;strong>Comprehensive validation tools&lt;/strong> to verify the structure and validity of ATC codes using authoritative reference lists.&lt;/p>
&lt;h2 id="core-functions">Core Functions&lt;/h2>
&lt;h3 id="drug_match">drug_match()&lt;/h3>
&lt;p>Matches drug names to ATC codes &lt;strong>without stripping&lt;/strong> trailing characters like &amp;ldquo;mg&amp;rdquo;, &amp;ldquo;g&amp;rdquo;, etc.&lt;/p>
&lt;p>&lt;strong>Usage:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="nf">library&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">atctools&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">output_data&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="nf">drug_match&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">example_drug_data&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;drug_name&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">example_reference_data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">output_data&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Key Features:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Preserves original drug name formatting&lt;/li>
&lt;li>Uses fuzzy matching algorithms for robust identification&lt;/li>
&lt;li>Includes confidence scoring through &lt;code>drug_name_flag&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="drug_match_strip">drug_match_strip()&lt;/h3>
&lt;p>Matches drug names to ATC codes &lt;strong>with trailing characters stripped&lt;/strong> for cleaner matching.&lt;/p>
&lt;p>&lt;strong>Usage:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="n">output_data_stripped&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="nf">drug_match_strip&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">example_drug_data_with_mg&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;drug_name&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">example_reference_data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">output_data_stripped&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Perfect for:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Drug names with dosage information (e.g., &amp;ldquo;paracetamol 500mg&amp;rdquo;)&lt;/li>
&lt;li>Standardizing drug nomenclature&lt;/li>
&lt;li>Handling varied formatting in clinical datasets&lt;/li>
&lt;/ul>
&lt;h3 id="atc2drug">atc2drug()&lt;/h3>
&lt;p>Matches ATC codes back to drug names directly with &lt;strong>no fuzzy matching&lt;/strong> for precise lookups.&lt;/p>
&lt;p>&lt;strong>Usage:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="n">output_data_atc2drug&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="nf">atc2drug&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">example_atc_data&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;ATC_code&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">example_reference_data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">output_data_atc2drug&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Use Cases:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Reverse lookups from ATC to drug names&lt;/li>
&lt;li>Data verification and validation&lt;/li>
&lt;li>Creating drug dictionaries from ATC classifications&lt;/li>
&lt;/ul>
&lt;h2 id="-atc-validation-functions">🔍 ATC Validation Functions&lt;/h2>
&lt;h3 id="validate_atc">validate_atc()&lt;/h3>
&lt;p>Checks if ATC codes follow the &lt;strong>correct structural format&lt;/strong> (length, character pattern).&lt;/p>
&lt;p>&lt;strong>Usage:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="n">validate_output&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="nf">validate_atc&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">example_atc_data_for_validation&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;atc_1&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">validate_output&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Validation Criteria:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Proper ATC code length and structure&lt;/li>
&lt;li>Character pattern verification&lt;/li>
&lt;li>Format compliance with WHO ATC standards&lt;/li>
&lt;/ul>
&lt;h3 id="validate_atc_by_reference">validate_atc_by_reference()&lt;/h3>
&lt;p>Checks if ATC codes &lt;strong>exist in a given reference list&lt;/strong> (e.g., WHO ATC index or validated datasets).&lt;/p>
&lt;p>&lt;strong>Usage:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="n">validate_by_ref_output&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="nf">validate_atc_by_reference&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">example_atc_data_for_validation&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s">&amp;#34;atc_2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">example_reference_data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">validate_by_ref_output&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="combined-validation-workflow">Combined Validation Workflow&lt;/h3>
&lt;p>&lt;strong>Comprehensive validation&lt;/strong> using both format and reference checking:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="n">output_combined&lt;/span> &lt;span class="o">&amp;lt;-&lt;/span> &lt;span class="n">example_atc_data_for_validation&lt;/span> &lt;span class="o">%&amp;gt;%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nf">validate_atc&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;atc_1&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">%&amp;gt;%&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nf">validate_atc_by_reference&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;atc_2&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">example_reference_data&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">output_combined&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Output Flags:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;code>atc_1_invalid&lt;/code>: Flag for invalid format (1 = invalid, 0 = valid)&lt;/li>
&lt;li>&lt;code>atc_2_invalid&lt;/code>: Flag for &amp;ldquo;not found in reference list&amp;rdquo; (1 = not found, 0 = found)&lt;/li>
&lt;/ul>
&lt;h2 id="understanding-drug_name_flag">Understanding drug_name_flag&lt;/h2>
&lt;p>The &lt;code>drug_name_flag&lt;/code> column provides &lt;strong>matching confidence&lt;/strong> in outputs from &lt;code>drug_match()&lt;/code> and &lt;code>drug_match_strip()&lt;/code>:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>0&lt;/strong>: First 3 characters of drug name match the first 3 of matched ATC code ✅&lt;/li>
&lt;li>&lt;strong>1&lt;/strong>: Mismatch detected between drug name and ATC prefix ⚠️&lt;/li>
&lt;/ul>
&lt;p>This flag helps identify potential matching errors and enables quality control in large datasets.&lt;/p>
&lt;h2 id="example-datasets">Example Datasets&lt;/h2>
&lt;p>atctools includes comprehensive example datasets for testing and learning:&lt;/p>
&lt;h3 id="example_drug_data">&lt;strong>example_drug_data&lt;/strong>&lt;/h3>
&lt;p>Drug names without dosage information for clean matching scenarios.&lt;/p>
&lt;h3 id="example_drug_data_with_mg">&lt;strong>example_drug_data_with_mg&lt;/strong>&lt;/h3>
&lt;p>Drug names with trailing dosage units (e.g., &amp;ldquo;paracetamol 500mg&amp;rdquo;) for strip matching.&lt;/p>
&lt;h3 id="example_atc_data">&lt;strong>example_atc_data&lt;/strong>&lt;/h3>
&lt;p>ATC codes for testing &lt;code>atc2drug()&lt;/code> – includes valid, invalid, and NA values.&lt;/p>
&lt;h3 id="example_reference_data">&lt;strong>example_reference_data&lt;/strong>&lt;/h3>
&lt;p>Reference dataset for drug name ↔ ATC code matching workflows.&lt;/p>
&lt;h3 id="example_atc_data_for_validation--new">&lt;strong>example_atc_data_for_validation&lt;/strong> ✨ New!&lt;/h3>
&lt;p>Contains ATC codes across multiple columns for testing both structural and reference-based validation.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>Install the development version directly from GitHub:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># install.packages(&amp;#34;devtools&amp;#34;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">devtools&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="nf">install_github&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;vljlangen/atctools&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="use-cases">Use Cases&lt;/h2>
&lt;p>Perfect for:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Pharmaceutical researchers&lt;/strong> standardizing drug classifications&lt;/li>
&lt;li>&lt;strong>Clinical data scientists&lt;/strong> validating medication datasets&lt;/li>
&lt;li>&lt;strong>Epidemiologists&lt;/strong> conducting drug utilization studies&lt;/li>
&lt;li>&lt;strong>Healthcare analysts&lt;/strong> ensuring data quality in EHR systems&lt;/li>
&lt;li>&lt;strong>Regulatory affairs&lt;/strong> professionals working with drug databases&lt;/li>
&lt;li>&lt;strong>Pharmacovigilance&lt;/strong> teams processing adverse event data&lt;/li>
&lt;/ul>
&lt;h2 id="key-updates--features">Key Updates &amp;amp; Features&lt;/h2>
&lt;h3 id="-new-validation-functions">✅ &lt;strong>New Validation Functions&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>&lt;code>validate_atc()&lt;/code> checks format validity against WHO standards&lt;/li>
&lt;li>&lt;code>validate_atc_by_reference()&lt;/code> verifies presence in reference datasets&lt;/li>
&lt;/ul>
&lt;h3 id="-enhanced-testing">🧪 &lt;strong>Enhanced Testing&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>New &lt;code>example_atc_data_for_validation&lt;/code> dataset&lt;/li>
&lt;li>Comprehensive validation workflow examples&lt;/li>
&lt;/ul>
&lt;h3 id="-improved-documentation">🔁 &lt;strong>Improved Documentation&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Updated function examples with real-world scenarios&lt;/li>
&lt;li>Clear validation workflow documentation&lt;/li>
&lt;/ul>
&lt;h3 id="-performance-improvements">🧹 &lt;strong>Performance Improvements&lt;/strong>&lt;/h3>
&lt;ul>
&lt;li>Enhanced &lt;code>atc2drug()&lt;/code> function with better column detection&lt;/li>
&lt;li>Optimized matching algorithms for large datasets&lt;/li>
&lt;/ul>
&lt;h2 id="why-atctools">Why atctools?&lt;/h2>
&lt;p>Working with ATC codes manually is error-prone and time-consuming. atctools solves this by:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Automating matching&lt;/strong> between drug names and ATC codes&lt;/li>
&lt;li>&lt;strong>Ensuring data quality&lt;/strong> through comprehensive validation&lt;/li>
&lt;li>&lt;strong>Handling edge cases&lt;/strong> intelligently (dosage units, spelling variations)&lt;/li>
&lt;li>&lt;strong>Providing confidence metrics&lt;/strong> for quality control&lt;/li>
&lt;li>&lt;strong>Supporting research workflows&lt;/strong> with robust, tested functions&lt;/li>
&lt;/ul>
&lt;h2 id="technical-details">Technical Details&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Built for&lt;/strong>: R statistical computing environment&lt;/li>
&lt;li>&lt;strong>Specialty&lt;/strong>: Pharmaceutical and healthcare data analysis&lt;/li>
&lt;li>&lt;strong>Dependencies&lt;/strong>: Minimal dependencies for maximum compatibility&lt;/li>
&lt;li>&lt;strong>License&lt;/strong>: Open source (check repository for specific license)&lt;/li>
&lt;li>&lt;strong>Maintained&lt;/strong>: Actively developed with regular updates&lt;/li>
&lt;/ul>
&lt;h2 id="development--support">Development &amp;amp; Support&lt;/h2>
&lt;p>atctools is open source and welcomes contributions from the pharmaceutical data science community. Bug reports, feature requests, and pull requests are encouraged on the &lt;a href="https://github.com/vljlangen/atctools" target="_blank" rel="noopener">GitHub repository&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Questions or issues?&lt;/strong> Feel free to reach out through the project&amp;rsquo;s GitHub issues page.&lt;/p>
&lt;p>Transform your pharmaceutical data workflows from manual, error-prone processes into automated, validated pipelines with atctools!&lt;/p></description></item><item><title>Divergent Git Branches - From Problem to Solution</title><link>https://villelangen.com/projects/divergent_git_branches/</link><pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/divergent_git_branches/</guid><description/></item><item><title>tablestylizer: R Package for Styling and Formatting Tables</title><link>https://villelangen.com/dev-work/tablestylizer/</link><pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/dev-work/tablestylizer/</guid><description>&lt;p>&lt;strong>tablestylizer&lt;/strong> is an R package created by Ville Langén that provides a comprehensive set of functions for styling and formatting tables, making them more suitable for publication in academic papers and reports.&lt;/p>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>The tablestylizer package enhances the visual appeal and clarity of tables generated in R, transforming raw output into polished, publication-ready formats. It&amp;rsquo;s particularly useful for researchers and data analysts who need to present statistical results in a professional manner.&lt;/p>
&lt;h2 id="key-features">Key Features&lt;/h2>
&lt;h3 id="stylize_tableone-function">stylize_tableone() Function&lt;/h3>
&lt;p>Processes a tableone object to a lean, publication-ready format:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Converts rownames to column names&lt;/strong> for better structure&lt;/li>
&lt;li>&lt;strong>Transfers percentage symbols&lt;/strong> appropriately&lt;/li>
&lt;li>&lt;strong>Removes unnecessary symbols&lt;/strong> that clutter the output&lt;/li>
&lt;li>&lt;strong>Automatic p-value processing&lt;/strong> using the &lt;code>stylize_p()&lt;/code> function when p-value columns are present&lt;/li>
&lt;/ul>
&lt;h3 id="stylize_p-function">stylize_p() Function&lt;/h3>
&lt;p>Specialized p-value formatting for improved readability:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Rounds to 2 decimal places&lt;/strong> whenever feasible&lt;/li>
&lt;li>&lt;strong>Handles small values&lt;/strong>: Values less than 0.001 are expressed as &lt;code>&amp;quot;&amp;lt;0.001&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;strong>Smart 0.05 handling&lt;/strong>: Avoids outputting exactly &lt;code>&amp;quot;0.05&amp;quot;&lt;/code> since this may not hold practical meaning when alpha = 0.05&lt;/li>
&lt;li>&lt;strong>Preserves precision&lt;/strong>: If rounding would result in &lt;code>&amp;quot;0.050&amp;quot;&lt;/code>, the original value is retained&lt;/li>
&lt;li>&lt;strong>Exact 0.050 preservation&lt;/strong>: Original values of exactly 0.050 are kept without rounding&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Usage Examples:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize_p&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0.05795&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;0.06&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize_p&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0.0499&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;0.0499&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize_p&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0.002&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;0.002&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize_p&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0.0005&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;&amp;lt;0.001&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="stylize1-function">stylize1() Function&lt;/h3>
&lt;p>Stylizes numeric values with custom rules, targeting 1 decimal place:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Rounds to 1 decimal place&lt;/strong> unless they round to a smaller digit&lt;/li>
&lt;li>&lt;strong>Threshold parameter&lt;/strong>: Optional specification for displaying values as &lt;code>&amp;quot;&amp;lt;threshold&amp;quot;&lt;/code>&lt;/li>
&lt;li>&lt;strong>Scientific notation&lt;/strong>: Very large or small values are expressed as powers of 10&lt;/li>
&lt;li>&lt;strong>Intelligent rounding&lt;/strong>: Preserves precision when rounding would lose significant information&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Usage Examples:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">-0.05&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;-0.1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0.002&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;0.002&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0.0005&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="m">0.001&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;&amp;lt;0.001&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="stylize2-function">stylize2() Function&lt;/h3>
&lt;p>Similar to &lt;code>stylize1()&lt;/code>, but targeting 2 decimal places:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Rounds to 2 decimal places&lt;/strong> with intelligent precision handling&lt;/li>
&lt;li>&lt;strong>Scientific notation&lt;/strong>: Very large or small values expressed as powers of 10&lt;/li>
&lt;li>&lt;strong>Threshold parameter&lt;/strong>: Optional for &lt;code>&amp;quot;&amp;lt;threshold&amp;quot;&lt;/code> display&lt;/li>
&lt;li>&lt;strong>Consistent formatting&lt;/strong>: Maintains uniform decimal place presentation&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Usage Examples:&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize2&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">-0.05&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;-0.10&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize2&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0.002&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;0.002&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nf">stylize2&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="m">0.0005&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="m">0.001&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Returns: &amp;#34;&amp;lt;0.001&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>Install the development version directly from GitHub:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-r" data-lang="r">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Install the development version from GitHub&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">devtools&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="nf">install_github&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;vljlangen/tablestylizer&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="use-cases">Use Cases&lt;/h2>
&lt;p>Perfect for:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Academic researchers&lt;/strong> preparing statistical tables for publication&lt;/li>
&lt;li>&lt;strong>Data analysts&lt;/strong> creating professional reports&lt;/li>
&lt;li>&lt;strong>Biostatisticians&lt;/strong> formatting clinical trial results&lt;/li>
&lt;li>&lt;strong>Journal submissions&lt;/strong> requiring specific formatting standards&lt;/li>
&lt;li>&lt;strong>Presentations&lt;/strong> where clear, readable tables are essential&lt;/li>
&lt;/ul>
&lt;h2 id="why-tablestylizer">Why tablestylizer?&lt;/h2>
&lt;p>Statistical tables often contain formatting inconsistencies that make them difficult to read and unprofessional in appearance. tablestylizer solves this by:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Standardizing number formatting&lt;/strong> across all table elements&lt;/li>
&lt;li>&lt;strong>Improving readability&lt;/strong> through consistent decimal places and scientific notation&lt;/li>
&lt;li>&lt;strong>Handling edge cases&lt;/strong> intelligently (like the 0.05 p-value scenario)&lt;/li>
&lt;li>&lt;strong>Saving time&lt;/strong> with automated formatting rules&lt;/li>
&lt;li>&lt;strong>Ensuring publication standards&lt;/strong> are met consistently&lt;/li>
&lt;/ul>
&lt;h2 id="technical-details">Technical Details&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Built for&lt;/strong>: R statistical computing environment&lt;/li>
&lt;li>&lt;strong>Dependencies&lt;/strong>: Minimal dependencies for maximum compatibility&lt;/li>
&lt;li>&lt;strong>License&lt;/strong>: Open source (check repository for specific license)&lt;/li>
&lt;li>&lt;strong>Maintained&lt;/strong>: Actively developed and supported&lt;/li>
&lt;/ul>
&lt;h2 id="development--support">Development &amp;amp; Support&lt;/h2>
&lt;p>tablestylizer is open source and welcomes contributions. Bug reports, feature requests, and pull requests are encouraged on the &lt;a href="https://github.com/vljlangen/tablestylizer" target="_blank" rel="noopener">GitHub repository&lt;/a>.&lt;/p>
&lt;p>&lt;strong>Questions or issues?&lt;/strong> Feel free to reach out through the project&amp;rsquo;s GitHub issues page.&lt;/p>
&lt;p>Transform your R table formatting from tedious manual work into a streamlined, professional process with tablestylizer!&lt;/p></description></item><item><title>Step-by-Step Guide with Example Videos for Creating R Packages</title><link>https://villelangen.com/projects/r_package_guide/</link><pubDate>Sun, 16 Jun 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/r_package_guide/</guid><description/></item><item><title>Beginner's Guide to R Programming</title><link>https://villelangen.com/projects/r_guide/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/r_guide/</guid><description>&lt;h3 id="heading">&lt;/h3></description></item><item><title>Easily Import Custom Citation Styles into Zotero</title><link>https://villelangen.com/projects/zotero_custom_citation_style/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/zotero_custom_citation_style/</guid><description>&lt;h3 id="how-to-add-a-downloaded-citation-style-to-zotero">How to add a (downloaded) citation style to Zotero&lt;/h3>
&lt;ol>
&lt;li>Click Zotero —&amp;gt; Preferences&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/zotero_custom_citation_style/style1_hu3356054370334116498.webp 400w,
/projects/zotero_custom_citation_style/style1_hu1781768691586674315.webp 760w,
/projects/zotero_custom_citation_style/style1_hu2845064525975358014.webp 1200w"
src="https://villelangen.com/projects/zotero_custom_citation_style/style1_hu3356054370334116498.webp"
width="289"
height="249"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="2">
&lt;li>Select the Cite tab and click on the + sign&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/zotero_custom_citation_style/style2_hu12826409757679657630.webp 400w,
/projects/zotero_custom_citation_style/style2_hu3651820433993797508.webp 760w,
/projects/zotero_custom_citation_style/style2_hu5590896549055878271.webp 1200w"
src="https://villelangen.com/projects/zotero_custom_citation_style/style2_hu12826409757679657630.webp"
width="605"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="3">
&lt;li>Navigate to the csl file, select it and click Open&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/zotero_custom_citation_style/style3_hu9250750379090013177.webp 400w,
/projects/zotero_custom_citation_style/style3_hu12055343277991073260.webp 760w,
/projects/zotero_custom_citation_style/style3_hu3768816142452883302.webp 1200w"
src="https://villelangen.com/projects/zotero_custom_citation_style/style3_hu9250750379090013177.webp"
width="708"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="4">
&lt;li>If you succeeded to add the new style, it is displayed in the list of the styles in the Style Manager in Zotero&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/zotero_custom_citation_style/style4_hu9303651028274484453.webp 400w,
/projects/zotero_custom_citation_style/style4_hu5528672292703564260.webp 760w,
/projects/zotero_custom_citation_style/style4_hu1304253333323235065.webp 1200w"
src="https://villelangen.com/projects/zotero_custom_citation_style/style4_hu9303651028274484453.webp"
width="617"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Many thanks to &lt;a href="https://anton.cromba.ch/2016/02/07/a-minimal-citation-stylefor-grant-proposals/" target="_blank" rel="noopener">Anton C. for sharing the style&lt;/a> that is showcased in the above image.&lt;/p></description></item><item><title>Easy Flowchart Creation with Free yEd Software</title><link>https://villelangen.com/projects/yed/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/yed/</guid><description>&lt;br>
&lt;br>
&lt;p>The free software yEd allows for the creation of flowcharts very quickly. There is no need to manually stretch boxes or similar actions - the program does this automatically upon request. Below are quick instructions for using the program.&lt;/p>
&lt;p>(Click to &lt;a href="https://vldesign.kapsi.fi/yed-pikaopas/" target="_blank" rel="noopener">this external link&lt;/a> for a Finnish version of this tutorial.)&lt;/p>
&lt;br>
&lt;h3 id="creating-and-writing-in-a-box-or-other-element">Creating and Writing in a Box (or Other Element)&lt;/h3>
&lt;ul>
&lt;li>Drag the element from the right onto the white canvas&lt;/li>
&lt;li>Activate the element by clicking on it with the mouse&lt;/li>
&lt;li>Press enter&lt;/li>
&lt;li>Write text&lt;/li>
&lt;li>If you want to change lines, press Shift+Enter&lt;/li>
&lt;li>Write more text&lt;/li>
&lt;li>Finally, press enter&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt=""
src="https://villelangen.com/projects/yed/kuva1.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="panning-and-zooming">Panning and Zooming&lt;/h3>
&lt;ul>
&lt;li>Command + mouse scroll zooms in and out&lt;/li>
&lt;li>Panning is possible by holding down the right mouse button&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt=""
src="https://villelangen.com/projects/yed/kuva4.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="creating-arrows-between-elements">Creating Arrows Between Elements&lt;/h3>
&lt;ul>
&lt;li>Click on one element, but do not release the mouse button&lt;/li>
&lt;li>Drag the mouse to the location of the next element&lt;/li>
&lt;li>Release the mouse button&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt=""
src="https://villelangen.com/projects/yed/kuva2.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="automatic-width-adjustment-based-on-text-for-elements">Automatic Width Adjustment Based on Text for Elements&lt;/h3>
&lt;p>There is no need to manually stretch elements to fit text neatly and ensure all elements are the same size - the program does this automatically upon request.&lt;/p>
&lt;ul>
&lt;li>Select the elements you want to be the same size&lt;/li>
&lt;li>From the top menu, select Tools -&amp;gt; Fit Node to Label&lt;/li>
&lt;li>If you want all elements to be the same size, select Adapt to Maximum Node&lt;/li>
&lt;li>Do not select Ignore Width and Ignore Height&lt;/li>
&lt;li>Press Ok&lt;/li>
&lt;li>&lt;strong>Note:&lt;/strong> If you want this process to apply only to selected items, make sure to choose &amp;ldquo;Act on Selection Only&amp;rdquo;&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt=""
src="https://villelangen.com/projects/yed/kuva6.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="changing-the-properties-of-an-element-or-multiple-elements">Changing the Properties of an Element (or Multiple Elements)&lt;/h3>
&lt;ul>
&lt;li>Activate one or more elements&lt;/li>
&lt;li>Press Command-I or alternatively, right-click and select Properties&lt;/li>
&lt;li>Modify the properties as desired&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt=""
src="https://villelangen.com/projects/yed/kuva3.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="creating-beautiful-labels-for-arrows">Creating Beautiful Labels for Arrows&lt;/h3>
&lt;ul>
&lt;li>Click on the arrow&lt;/li>
&lt;li>Press enter&lt;/li>
&lt;li>Write text for the arrow label and press enter&lt;/li>
&lt;li>Select the arrow label
&lt;ul>
&lt;li>If you want all arrow labels, press Command-A at this stage&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>Right-click on the label and select Properties&lt;/li>
&lt;li>Change the background color of the label to white and the Model to Centered&lt;/li>
&lt;li>Press Ok&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt=""
src="https://villelangen.com/projects/yed/kuva5.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="saving-the-flowchart-created-with-yed">Saving the Flowchart Created with yEd&lt;/h3>
&lt;p>Remember to save your flowchart properly — not just export it as a .jpeg file or similar! You may need to modify the flowchart later and export it again, perhaps in a different format like a .png file.&lt;/p>
&lt;ul>
&lt;li>From the top menu, select File -&amp;gt; Save As&amp;hellip;&lt;/li>
&lt;li>Give your yEd flowchart project file a name&lt;/li>
&lt;li>Click Save&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt=""
src="https://villelangen.com/projects/yed/kuva7.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="exporting-the-flowchart-created-with-yed">Exporting the Flowchart Created with yEd&lt;/h3>
&lt;p>While yEd saves projects in the graphml format, which is great for editing, some scenarios may require exporting the flowchart to bitmap formats like .tiff or .png, especially for submission to scientific journals.&lt;/p>
&lt;p>Below are instructions for exporting your flowchart in .png format:&lt;/p>
&lt;ul>
&lt;li>From the top menu, select File -&amp;gt; Export&amp;hellip;&lt;/li>
&lt;li>Choose the format from the dropdown menu, here we select &amp;ldquo;PNG Format (*.png)&amp;rdquo;&lt;/li>
&lt;li>Give your exported file a suitable name&lt;/li>
&lt;li>Click Save&lt;/li>
&lt;li>Click on the Size field and select Custom Width&lt;/li>
&lt;li>For Custom Width, input at least 1000 pixels to ensure a high-quality image for the journal&lt;/li>
&lt;li>Make sure the Scaling Factor is set to exactly 1.0 to prevent any distortion in the image&lt;/li>
&lt;li>Click OK&lt;/li>
&lt;/ul>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt=""
src="https://villelangen.com/projects/yed/kuva8.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="verifying-image-quality">Verifying Image Quality&lt;/h3>
&lt;p>After exporting your flowchart, it&amp;rsquo;s crucial to ensure that the image maintains its high quality. Sometimes, what you see in the software might differ from the final exported result. Here&amp;rsquo;s a quick step to verify the image quality:&lt;/p>
&lt;ul>
&lt;li>Always double-click on the exported image file on your hard drive to open and inspect it&lt;/li>
&lt;li>This ensures that the image appears as intended and in high resolution&lt;/li>
&lt;/ul>
&lt;p>By taking this extra step, you can catch any potential issues with image clarity or resolution before sharing or submitting it.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt=""
src="https://villelangen.com/projects/yed/kuva9.gif"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p></description></item><item><title>Lightning Fast GitLab Guide for UTU Users (and the Rest of Us)</title><link>https://villelangen.com/projects/git_guide/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/git_guide/</guid><description/></item><item><title>Seamless Transition: Importing Mendeley References to Zotero Made Easy</title><link>https://villelangen.com/projects/from_mendeley_to_zotero/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/from_mendeley_to_zotero/</guid><description>&lt;h3 id="introduction">Introduction&lt;/h3>
&lt;p>Given the ongoing developments with the newer &amp;lsquo;Mendeley Reference Manager&amp;rsquo;, some authors might feel the need to migrate from Mendeley to Zotero. The future will tell, whether “Mendeley Reference Manager” becomes as handy as the former version “Mendeley Desktop”, but for now, you may want to consider the migration to Zotero.&lt;/p>
&lt;h3 id="installation-of-zotero-unless-you-already-have-it">Installation of Zotero (unless you already have it)&lt;/h3>
&lt;p>Before continuing with tutorial, you’ll have to download and install Zotero on your computer from:&lt;/p>
&lt;p>&lt;a href="https://www.zotero.org/" target="_blank" rel="noopener">https://www.zotero.org/&lt;/a>&lt;/p>
&lt;p>There are many installation tutorials on the internet, for instance the following by Georgia State University Library:&lt;/p>
&lt;p>&lt;a href="https://www.youtube.com/watch?v=pueO_XYiS1w" target="_blank" rel="noopener">https://www.youtube.com/watch?v=pueO_XYiS1w&lt;/a>&lt;/p>
&lt;h3 id="signing-up-in-zotero-unless-you-already-have-done-it">Signing up in Zotero (unless you already have done it)&lt;/h3>
&lt;p>The following tutorial video by mr. Haq also explains how to sign up for Zotero, which you will need to do before continuing to the migration tutorial I showcase below.&lt;/p>
&lt;p>&lt;a href="https://www.youtube.com/watch?v=ERU2-unnCOQ" target="_blank" rel="noopener">https://www.youtube.com/watch?v=ERU2-unnCOQ&lt;/a>&lt;/p>
&lt;h3 id="adding-the-zotero-plug-in-for-word-unless-you-already-have-the-plug-in-installed-which-you-may-verify-as-follows">Adding the Zotero plug-in for Word (unless you already have the plug-in installed, which you may verify as follows)&lt;/h3>
&lt;ol>
&lt;li>Click Zotero → Preferences&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/from_mendeley_to_zotero/zotero1_hu4058182519893086790.webp 400w,
/projects/from_mendeley_to_zotero/zotero1_hu12289632710160239853.webp 760w,
/projects/from_mendeley_to_zotero/zotero1_hu3511188064291886049.webp 1200w"
src="https://villelangen.com/projects/from_mendeley_to_zotero/zotero1_hu4058182519893086790.webp"
width="491"
height="424"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="2">
&lt;li>Click Cite → Word Processors → and if needed, click to the icon that installs the MS Word Add-in (in my case depicted in the image below, it has already been installed and there is no need to do it again)&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/from_mendeley_to_zotero/zotero2_hu15026237715109083920.webp 400w,
/projects/from_mendeley_to_zotero/zotero2_hu6939095958391039108.webp 760w,
/projects/from_mendeley_to_zotero/zotero2_hu14275704009359638567.webp 1200w"
src="https://villelangen.com/projects/from_mendeley_to_zotero/zotero2_hu15026237715109083920.webp"
width="531"
height="485"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="migration-from-mendeley-to-zotero">Migration from Mendeley to Zotero&lt;/h3>
&lt;p>After having installed Zotero and signed up in Zotero, you can migrate your references from Mendeley to Zotero. This can be very easily done by following these steps:&lt;/p>
&lt;ol>
&lt;li>Sync your Mendeley references to Mendeley servers&lt;/li>
&lt;/ol>
&lt;p>Be sure to sync your Mendeley library first. If you are on the older software “Mendeley Desktop”, click the “Sync” button in it. If you are using the newer “Mendeley Reference Manager”, your references have already been synced and you don’t have to care about this step.&lt;/p>
&lt;ol start="2">
&lt;li>Back to Zotero, click File → Import&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/from_mendeley_to_zotero/zotero3_hu15708840113622880173.webp 400w,
/projects/from_mendeley_to_zotero/zotero3_hu14227987899630438854.webp 760w,
/projects/from_mendeley_to_zotero/zotero3_hu7472434625451639860.webp 1200w"
src="https://villelangen.com/projects/from_mendeley_to_zotero/zotero3_hu15708840113622880173.webp"
width="679"
height="346"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="3">
&lt;li>Select “Mendeley…” and click “Continue&amp;quot;&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/from_mendeley_to_zotero/zotero4_hu13480641453871823488.webp 400w,
/projects/from_mendeley_to_zotero/zotero4_hu12193866995030290470.webp 760w,
/projects/from_mendeley_to_zotero/zotero4_hu15563435791437785948.webp 1200w"
src="https://villelangen.com/projects/from_mendeley_to_zotero/zotero4_hu13480641453871823488.webp"
width="760"
height="516"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="4">
&lt;li>Type in your Mendeley credentials and click “Continue”.&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/from_mendeley_to_zotero/zotero5_hu6768980042710958486.webp 400w,
/projects/from_mendeley_to_zotero/zotero5_hu10057172684165848873.webp 760w,
/projects/from_mendeley_to_zotero/zotero5_hu614959205357335701.webp 1200w"
src="https://villelangen.com/projects/from_mendeley_to_zotero/zotero5_hu6768980042710958486.webp"
width="660"
height="550"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="5">
&lt;li>The tick on “Place imported…” may be left on. Click “Continue”.&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/from_mendeley_to_zotero/zotero6_hu14610674755307549480.webp 400w,
/projects/from_mendeley_to_zotero/zotero6_hu800102629118398603.webp 760w,
/projects/from_mendeley_to_zotero/zotero6_hu8737216745718691232.webp 1200w"
src="https://villelangen.com/projects/from_mendeley_to_zotero/zotero6_hu14610674755307549480.webp"
width="665"
height="554"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;ol start="6">
&lt;li>Ready. I’ve been using Mendeley for years, and the importation of my 1119 items took around 20 minutes.&lt;/li>
&lt;/ol>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="" srcset="
/projects/from_mendeley_to_zotero/zotero7_hu9455637726719336147.webp 400w,
/projects/from_mendeley_to_zotero/zotero7_hu9740222756166235818.webp 760w,
/projects/from_mendeley_to_zotero/zotero7_hu9908231596868808407.webp 1200w"
src="https://villelangen.com/projects/from_mendeley_to_zotero/zotero7_hu9455637726719336147.webp"
width="661"
height="545"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;h3 id="usage-of-zotero-as-compared-with-mendeley">Usage of Zotero as compared with Mendeley&lt;/h3>
&lt;p>The usage of Zotero is very intuitive and resembles Mendeley so much that I won’t cover the usage nor the minor differences between these softwares here. You may find excellent and fast tutorials online on sites like YouTube.&lt;/p>
&lt;p>I’ll conclude by reminding that if you have an old Word document that has citations made with the old “Mendeley Desktop” software, the citations can readily be read by the Zotero plug-in in Word, which is a wonderful feature. There is no need to specifically “import” those old MS Word files for use with Zotero.&lt;/p></description></item><item><title>Unlocking IPCW Analysis in R: A Step-by-Step Tutorial (in Finnish)</title><link>https://villelangen.com/projects/ipcw/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/ipcw/</guid><description/></item><item><title>VPN Article Search and Reference Management Tutorial for University of Turku Researchers (in Finnish)</title><link>https://villelangen.com/projects/vpn/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://villelangen.com/projects/vpn/</guid><description>&lt;h3 id="heading">&lt;/h3></description></item></channel></rss>