<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[ProteinQure - Medium]]></title>
        <description><![CDATA[Peptide-based drug delivery. - Medium]]></description>
        <link>https://medium.com/proteinqure?source=rss----c68ae32210c1---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>ProteinQure - Medium</title>
            <link>https://medium.com/proteinqure?source=rss----c68ae32210c1---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 11 Apr 2026 15:12:34 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/proteinqure" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Peptide binders for all]]></title>
            <link>https://medium.com/proteinqure/peptide-binders-for-all-7c6b6ae1772d?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/7c6b6ae1772d</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[drug-discovery]]></category>
            <category><![CDATA[phage-display]]></category>
            <category><![CDATA[peptides]]></category>
            <dc:creator><![CDATA[Lucas Siow]]></dc:creator>
            <pubDate>Wed, 13 Dec 2023 22:00:46 GMT</pubDate>
            <atom:updated>2023-12-20T22:15:03.529Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zbye_1ojyOnJB9afiVqZNw.png" /></figure><p><strong>Meet PQ Librarian: AI-driven Library Scoring</strong></p><p>Today, we’re thrilled to introduce a game-changer in the world of peptide discovery — PQ Librarian. This tool is the result of our experience working for years at the intersection of AI and display screening research. ProteinQure invites you to join the revolution and make data-driven decisions in drug discovery a reality.</p><p>Want to try it for yourself? Visit: <a href="https://librarian.proteinqure.com/">https://librarian.proteinqure.com/</a></p><p><strong>How to find the right peptide library for your target: A User’s Guide</strong></p><p>Ready to dive into the world of accelerated peptide drug discovery? PQ Librarian is now at your fingertips with a sleek online interface, ready to make early-stage drug discovery a whole lot more efficient,</p><ol><li>All it takes is a human gene name, UniProt ID, or full name of a protein, and you’re set. We’ve pre-computed the viability of commonly available libraries for the entire human proteome!</li><li>The result? Color-coded scores for various peptide libraries against your chosen target. We output color-coded scores for multiple peptide libraries against this target. Green for high hit potential, yellow for caution, and red for a low chance of success — simple, right?</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*o5Hv16VDu_Y4ZdnAHwLvsQ.png" /><figcaption>Fig 1. Screenshot of using PQ Librarian for three different protein targets (KRAS, SCN9A and BCL2A1)</figcaption></figure><p>Let’s test it out with “<a href="https://www.uniprot.org/uniprotkb/P01116/entry">KRAS</a>”. Predictions range from the optimistic green for our proprietary libraries to the cautious yellow for fully randomized linear and cyclic peptide libraries. Specifically, we define a Green target as an approximately 80% chance to find at least one hit with an affinity better than 1 µM. Note for some targets you will see Red as well.</p><p>It is important to note that the ProteinQure score is the maximum of multiple peptide libraries each with a unique scaffold.</p><p><strong>Why PQ Librarian Matters: Our Motivation</strong></p><p>Peptides are the unsung heroes of the therapeutic modalities, yet many library screening projects hit roadblocks. Display screening projects like phage display or mRNA display fail for unknown reasons, go unreported, and data is not fed back to improve the probability of success of peptide screening in the future. Enter PQ Librarian, combining Large Language Models, predictive neural networks, and training on a huge database of peptide-receptor interactions. We’ve also validated it on proprietary data from 20+ targets!</p><p>Not all hits are created equal! Our computational-designed libraries are not your average players. They are optimized for affinity, specificity, solubility, charge, and other properties that set them aside from fully randomized libraries. That being said, a simple library can be a useful starting point. That is why we are making PQ Librarian available to all — to help everyone get started with peptides.</p><p>Become part of a community that simplifies the complex, and let’s redefine the future of peptide library screening together — welcome to PQ Librarian!</p><p><strong>Solving the Puzzle: Your Peptide Quest Begins! (Contact us at </strong><a href="mailto:bd@proteinqure.com"><strong>bd@proteinqure.com</strong></a><strong>)</strong></p><p>Peptide drug development is like a puzzle — every project is a unique challenge waiting to be conquered. But here’s the fun part: there’s no one-size-fits-all solution. Since we founded ProteinQure, our team has been on a wild ride, tackling the trickiest puzzles in peptide drug design. Some problems require more bespoke solutions. Reach out for any of the following:</p><ul><li><strong>Tailored Libraries: </strong>We specialize in designing biased combinatorial libraries for specific targets and applications, such as membrane proteins or drug delivery (like siRNA).</li><li><strong>Enhanced Scoring Solutions: </strong>Our capabilities extend to scoring bespoke peptide libraries including non-canonical amino acid-containing libraries (like mRNA display) with novel scaffolds.</li><li><strong>Custom Target Scoring: </strong>We can score libraries against any antigen sequence, including proteins with mutations or alternative splicing, as well as higher precision library scoring against specific epitopes of targets (e.g. the extracellular domain of a target protein).</li><li><strong>Target Identification: </strong>We can use AI-driven methods to suggest possible targets across the entire human proteome if a specific cell-binding peptide sequence is known.</li></ul><h3>FAQ: <strong>PQ Librarian in Practice</strong></h3><p><strong>Q) What are some technical assumptions being made in your model?</strong></p><p>We’re looking forward to sharing behind-the-scenes details on how PQ Librarian was created, but for now, here are some important points.</p><ul><li>Targets are evaluated as monomers with no post-translational modifications</li><li>We do not evaluate the binding of all peptides in a combinatorial library (often larger than 10⁹). We subsample probabilistically within a library to predict binding scores.</li><li>Peptide binding prediction is predicted in the absence of any linker or phage coat protein. In some circumstances, we expect this would result in overestimation of the binding score to some targets.</li><li>PQ Librarian is not making any predictions about solubility, specificity, or other developability properties (we have other tools for that!)</li></ul><p><strong>Q) My target was found in your database, but all libraries had a “Red” score. Is there any hope for hit identification?</strong></p><p>Yes. Contact us and we can share custom solutions for challenging targets, along with feasibility evaluations for those solutions (subject to Confidential Disclosure Agreements, of course). See “Solving the Puzzle”.</p><p><strong>Q) My target was not found in your database, can you provide a score?</strong></p><p>Yes. Contact us and we would be happy to score any protein antigen sequence. However, we cannot score oligomeric targets where binding may be expected to occur at the interface of two proteins. See “Solving the Puzzle”.</p><p><strong>Q) My target was found in your database, but all libraries had a “Green” score. Does this mean that I should screen all libraries?</strong></p><p>Yes, if you have the resources. Starting with low-cost, easily accessible libraries can be a good starting point. However, there is always a potential to produce hits that are non-specific, insoluble, or include other developability liabilities. Given the choice between multiple libraries, you should seek a library with the potential to generate drug-like properties beyond binding. Contact us to screen ProteinQure’s proprietary libraries to maximize downstream success in hit validation and lead optimization.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7c6b6ae1772d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/peptide-binders-for-all-7c6b6ae1772d">Peptide binders for all</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Differences in breast cancer through a biochemical lens]]></title>
            <link>https://medium.com/proteinqure/differences-in-breast-cancer-through-a-biochemical-lens-c3453b21b0c2?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/c3453b21b0c2</guid>
            <category><![CDATA[protein-therapeutics]]></category>
            <category><![CDATA[breast-cancer-awareness]]></category>
            <category><![CDATA[breast-cancer]]></category>
            <category><![CDATA[peptides]]></category>
            <category><![CDATA[cancer-research]]></category>
            <dc:creator><![CDATA[Mark Fingerhuth]]></dc:creator>
            <pubDate>Fri, 27 Oct 2023 16:46:21 GMT</pubDate>
            <atom:updated>2023-10-27T17:04:57.867Z</atom:updated>
            <content:encoded><![CDATA[<blockquote>October is <a href="https://www.nationalbreastcancer.org/breast-cancer-awareness-month/">Breast Cancer Awareness Month</a>. Breast cancer is different for everyone, and this heterogeneity originates from differences in genetics and other features of cancer cells, affecting how tumors grow, spread, and respond to treatment. This article is intended to raise awareness about common types of breast cancer, which help doctors provide more personalized treatments. Advancements in research and technology are paving the way for more effective breast cancer treatments for unique cancer subtypes, offering hope for improved outcomes and a brighter future in the fight against this disease.</blockquote><p>Breast cancer is a <a href="https://cancer.ca/en/cancer-information/cancer-types/breast/what-is-breast-cancer">complex disease</a> that affects millions of individuals worldwide, and it comes in various forms. One crucial aspect of breast cancer classification revolves around the presence or absence of specific receptors on cancer cells. These receptors — HER2, ER, and PR — play a pivotal role in determining the course of the disease and guiding treatment decisions.</p><p>In this article, we’ll delve into the different types of breast cancer in relation to these receptors and explore how this knowledge is transforming the way we approach breast cancer treatment.</p><p><strong>HER2, ER, and PR Receptors</strong></p><p>HER2 (human epidermal growth factor receptor 2), ER (estrogen receptor), and PR (progesterone receptor) are proteins that are expressed in breast cancer cells. These receptors play crucial roles in how breast cancer cells grow and respond to treatments.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*4JuqJ7Uby_D8DZXHXiohAg.png" /><figcaption>Schematic showing the three different types of receptors (PR, ER and HER2) that define the different types of breast cancer. The three boxes at the bottom highlight some of the 3D structural features of these receptors.</figcaption></figure><ul><li><strong>PR</strong>: Progesterone receptors are nuclear receptors (expressed inside the cell) that interact with progesterone, a steroid hormone present in the body. The binding of progesterone can stimulate growth and survival of cancer cells.</li><li><strong>ER</strong>: Estrogen receptors are also nuclear receptors (expressed inside the cell), and like PR, they respond to hormones — in this case, estrogen. When estrogen binds to these receptors, it can stimulate cancer cell growth.</li><li><strong>HER2</strong>: A transmembrane<em> </em>protein (expressed on the cell surface) that helps breast cancer cells grow quickly.<strong> </strong>It can be overactive in some breast cancers, causing them to grow more aggressively.</li></ul><p>Understanding the presence or absence of these receptors helps doctors determine the most effective treatment strategies — also known as targeted therapy — for each patient’s unique type of breast cancer.</p><p><strong>Hormone Receptor-Positive (HR+) Breast Cancer:</strong></p><p>HR+ breast cancers are the most prevalent subtypes of breast cancer according to the <a href="https://seer.cancer.gov/statfacts/html/breast-subtypes.html">National Cancer Institute</a>.</p><p><strong><em>ER-Positive (ER+)</em></strong>: When breast cancer cells have estrogen receptors (ER+), it means they can respond to estrogen, a hormone that promotes cell growth. To combat ER+ breast cancer, doctors often employ hormone therapy, such as Tamoxifen or aromatase inhibitors, to block the effects of estrogen and slow down cancer cell growth.</p><p><strong><em>PR-Positive (PR+)</em></strong>: Similarly, some breast cancers express progesterone receptors (PR+), which can also fuel cancer growth when progesterone binds to them. Hormone therapy is used to counteract the impact of progesterone in PR+ breast cancer.</p><p><strong><em>ER/PR-Positive (ER+/PR+)</em></strong>: In some cases, breast cancers express both ER and PR receptors. These are categorized as ER+/PR+ breast cancers and are typically treated with hormone therapy.</p><p><strong>HER2-Positive (HER2+) Breast Cancer:</strong></p><p><strong><em>HER2-Positive (HER2+)</em></strong>: HER2 is a protein that can be overexpressed in certain breast cancers. HER2+ breast cancer often grows more aggressively since HER2 is a growth-promoting protein. Targeted therapies, such as Herceptin (trastuzumab) and other HER2 inhibitors, are employed alongside chemotherapy to effectively treat HER2+ breast cancer.</p><p><strong>Triple-Negative Breast Cancer (TNBC):</strong></p><p><a href="https://www.nature.com/articles/s41572-019-0111-2">10–15% of breast cancer patients</a> are diagnosed with triple-negative breast cancer. It is more common in women younger than age 40 and it tends to spread faster, currently has no good treatment option and has significantly lower survival rates than other breast cancer subtypes.</p><p><strong><em>Triple-Negative Breast Cancer (TNBC)</em></strong>: In this challenging subtype, breast cancer cells lack the expression of all three receptors — ER, PR, and HER2. Since hormone therapies and HER2-targeted treatments are ineffective, treatment options typically revolve around chemotherapy and, in some cases, immunotherapy.</p><p>Breast cancer is a heterogeneous disease, meaning it varies greatly from one patient to another. To provide the most effective treatment, physicians often perform molecular testing, such as genomic sequencing, to gain deeper insights into a patient’s specific subtype of breast cancer.</p><p>This personalized approach to treatment is transforming the field of oncology, offering new hope to patients facing a breast cancer diagnosis. As our <a href="https://onlinelibrary.wiley.com/doi/full/10.1002/cac2.12358">understanding of breast cancer</a> continues to evolve, so too do the treatment options available to those in need.</p><p>At ProteinQure, we’re dedicated to advancing the fight against breast cancer through cutting-edge research and innovative therapies. <strong>ProteinQure‘s first internal drug discovery program focuses on treating triple-negative breast cancer</strong> with a novel computationally designed peptide-drug conjugate.<strong> </strong>Check out this <a href="https://medium.com/proteinqure/proteinqures-recent-breakthrough-a-smart-breast-cancer-drug-912d36d78b7d">blog post</a>, our <a href="https://www.biospace.com/article/releases/proteinqure-inc-announces-robust-preclinical-efficacy-in-a-triple-negative-breast-cancer-mouse-tumour-model-study/">press release</a> and our <a href="https://proteinqure.com/files/sortilin_whitepaper.pdf">whitepaper</a> if you want to learn more about it. By staying at the forefront of scientific discovery, we aim to provide patients with the best possible treatment options and a brighter outlook on their journey to recovery.</p><p>Breast cancer is a challenging adversary, but with knowledge, research, and the right therapies, we’re working together to overcome it. Join us in the fight against breast cancer and help us spread awareness about the importance of HER2, ER, and PR receptors in breast cancer diagnosis and treatment!</p><p><em>All figures were created with BioRender.com and VMD.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c3453b21b0c2" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/differences-in-breast-cancer-through-a-biochemical-lens-c3453b21b0c2">Differences in breast cancer through a biochemical lens</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ProteinQure’s Recent Breakthrough: A ‘Smart’ Breast Cancer Drug]]></title>
            <link>https://medium.com/proteinqure/proteinqures-recent-breakthrough-a-smart-breast-cancer-drug-912d36d78b7d?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/912d36d78b7d</guid>
            <category><![CDATA[peptide-therapeutics]]></category>
            <category><![CDATA[cancer-treatments]]></category>
            <category><![CDATA[protein-design]]></category>
            <category><![CDATA[peptides]]></category>
            <category><![CDATA[cancer]]></category>
            <dc:creator><![CDATA[Mark Fingerhuth]]></dc:creator>
            <pubDate>Wed, 23 Aug 2023 15:55:20 GMT</pubDate>
            <atom:updated>2023-09-12T13:46:21.960Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HZLIe3bWKPd-egZbEpealA.png" /></figure><p>Chemotherapy, one of the primary treatments for cancer, unfortunately doesn’t differentiate between healthy cells and cancer cells. Imagine sending a SWAT team into a building to remove the bad guys but they can’t tell friend from foe. The result? A lot of unnecessary damage.</p><p>At ProteinQure we are working to solve this problem with our <strong>first internal drug discovery program</strong> focused on an<strong> </strong>especially deadly and currently <strong>untreatable type of breast cancer. </strong>We are thrilled to share some exciting news from our recent <a href="https://www.biospace.com/article/releases/proteinqure-inc-announces-robust-preclinical-efficacy-in-a-triple-negative-breast-cancer-mouse-tumour-model-study/">press release</a> with you:</p><blockquote>We conducted our first animal study with our most promising internal drug candidate, ARB-1-6. The study was overwhelmingly successful in demonstrating ARB-1-6’s ability to shrink breast cancer tumours without killing surrounding healthy cells.</blockquote><p>Our groundbreaking research revolves around a special protein on the surface of some breast cancer cells called ‘sortilin’ or SORT1.</p><h4>SORT1: The Doorway to Breast Cancer Cells</h4><p>So, what’s so unique about SORT1? This protein acts like a doorway into the cell. Certain forms of aggressive cancer, such as triple-negative breast cancer (TNBC), have a lot of these doorways. Recognizing the prevalence of these cellular doorways in TNBC, ProteinQure has innovatively designed a ‘smart’ drug. This ‘smart’ drug is like a specially crafted key, tailored to target and unlock the SORT1 doorway, ensuring the direct and targeted delivery of a medicine right into the cancerous cell.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wdLn4pE3ZzCB3pCXDrhuJg.png" /><figcaption>A ‘smart’ cancer drug ideally only kills cancer cells without harming the neighbouring healthy cells.</figcaption></figure><p>This focused approach has two significant benefits. First, it directly targets the harmful cancer cells, making the treatment more effective. Second, it minimizes damage to the healthy cells surrounding the cancer, which means fewer side effects for patients.</p><h4>Pioneering ‘smart’ drugs</h4><p>ProteinQure’s first ‘smart’ drug ARB-1-6, scientifically named a peptide-drug conjugate (PDC), is a combination of a peptide, a linker and a toxic payload.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rcTfK9pjJp9PT1mOQV67bA.png" /><figcaption>ARB-1-6: a peptide drug conjugate (PDC) consisting of three components: peptide, linker and toxic payload.</figcaption></figure><blockquote>ARB-1-6 was computationally designed using our proprietary software platform <strong>ProteinStudio. Th</strong>is platform utilizes a combination of molecular simulations on supercomputers and advanced AI models to design and optimize protein molecules for various properties.</blockquote><p>ProteinStudio allowed us to tweak and optimize the peptide in such a way that it strongly &amp; selectively binds to the SORT1 protein.</p><p>You can think of the peptide as the GPS system of the PDC, guiding the toxic payload directly to the SORT1 protein on the outside of the breast cancer cells. In other words, we’re creating guided missiles. Instead of damaging everything in their path, these missiles (or “smart” drugs) target only the harmful cancer cells, leaving healthy cells unharmed.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hvMmGaX71cfMddxgzesMaw.png" /><figcaption>ARB-1-6 binds strongly to SORT1 protein on the outside of breast cancer tumour cells. It does not bind to healthy cells since they barely have SORT1 proteins.</figcaption></figure><p>Upon reaching a tumour cell, ARB-1-6 latches onto the SORT1 protein and the cell absorbs the drug. Once inside the cell, the cell naturally starts to disassemble the PDC by breaking it down into its three components: peptide, linker and toxic payload.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*a6N4uCrOvPtbCtyBRqw9sA.png" /><figcaption>After binding to the SORT1 receptor on the outside of the cell, the ARB-1-6 molecule gets absorbed into the inside of the cell.</figcaption></figure><p>Initially, the peptide and linker shielded the payload’s toxic effects which allowed it to travel through the patient’s body without toxic side effects. However, once released it unleashes its full toxic potential spelling disaster for the tumour cell. The toxic payload now induces so-called ‘cell death’ effectively leading the tumour cell to self-destruct.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*97K4B0uWibQYoBDj_cRqjQ.png" /><figcaption>Once ARB-1-6 is inside the cell, the machinery inside the cell starts to split the molecule into its three components. Freeing the toxic payload unleashes it’s full toxic potential and kills the cancer cell.</figcaption></figure><p>Our recent animal studies have bolstered our excitement around ARB-1-6. When tested, this drug significantly slowed down the growth of breast cancer tumours in animals, without causing the harmful side effects typically associated with chemotherapy. These positive outcomes emphasize the potential of the targeted ‘smart’ drug approach, offering hope for more effective and safer treatments in the future.</p><h4>What’s Next?</h4><p>ProteinQure isn’t stopping here — we’re pressing on to test our PDC molecules further, aiming to refine and expand their applications. Combining ProteinStudio and the PDC delivery platform, the team is investigating the potential of delivering non-toxic payloads such as gene snippets or radioactive atoms. Gene snippets or ‘oligonucleotides’ can turn off specific harmful components in diseases and radioactive atoms can be used to diagnose cancers within the body. This not only amplifies the therapeutic capabilities of our delivery platform but also broadens the scope of diseases and conditions we can tackle.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*cLyntChpCUU17IPBCplRqw.png" /><figcaption>Peptide-drug conjugates (PDCs) can deliver different payloads into cells of our choice.</figcaption></figure><h4>Final Thoughts</h4><p>In a world where we often hear of the harsh realities and side effects of cancer treatment, it’s important to make treatments safer and more efficient. With triple-negative breast cancer still awaiting FDA-approved solutions, our PDC molecules present a beacon of hope. Our novel approach offers a promising step forward in the ongoing battle against breast cancer.</p><p>For those interested in diving deeper into the technical details, check out the <a href="https://www.biospace.com/article/releases/proteinqure-inc-announces-robust-preclinical-efficacy-in-a-triple-negative-breast-cancer-mouse-tumour-model-study/">press release</a> and our <a href="https://proteinqure.com/files/sortilin_whitepaper.pdf">SORT1 whitepaper</a>.</p><p><em>All figures were created with BioRender.com</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=912d36d78b7d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/proteinqures-recent-breakthrough-a-smart-breast-cancer-drug-912d36d78b7d">ProteinQure’s Recent Breakthrough: A ‘Smart’ Breast Cancer Drug</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why you should write [Weekly Thoughts #1] — 5min]]></title>
            <link>https://medium.com/proteinqure/why-you-should-write-weekly-thoughts-1-5min-3bdf55d38b52?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/3bdf55d38b52</guid>
            <category><![CDATA[startup]]></category>
            <category><![CDATA[startup-lessons]]></category>
            <category><![CDATA[proteinqure]]></category>
            <dc:creator><![CDATA[Lucas Siow]]></dc:creator>
            <pubDate>Mon, 11 Apr 2022 16:22:42 GMT</pubDate>
            <atom:updated>2022-04-11T16:32:27.179Z</atom:updated>
            <content:encoded><![CDATA[<h3>Why you should write more [Weekly Thoughts #1] — 5min</h3><p><a href="https://medium.com/proteinqure/a-new-series-of-writing-on-proteinqure-weekly-thoughts-introduction-aacb742558db">Find the introduction to this series</a></p><p>Originally written: Dec 18, 2020</p><p>Editing: Minimal</p><p>Lucas’ Updated Notes: At ProteinQure we have a page on Notion, where decisions are documented and that is publically available to all. This has been really helpful in providing a place where we collect and can review important decisions we made as a company. This is one of my favorite things we’ve to create alignment within ProteinQure.</p><p>See a redacted set of some of the most recent entries.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/535/1*QooBOcH-6dxZpiHAjDW2WA.png" /><figcaption>Screenshot from internal ProteinQure Notion</figcaption></figure><h3>Why you should write</h3><p>There are lots of ways to share information (slides, videos, writing of various sorts, meetings, etc.). We’ve experimented with many of those already. What I’ve come to realize is that the best form tends to be mostly about your goals and secondarily about your personal style. I wanted to focus a bit on why I like to write (both these weekly emails and longer memos, but also notion entries).</p><p>Note these are in order of importance/frequency to me. Though I think they apply to pretty much everyone (just in differing frequencies).</p><p><strong>1. To help the writer make better decisions.</strong></p><p>Writing forces you to be articulate in much more detail than any other form of communication.</p><p>The act of forcing yourself to write (and be concise) is extremely helpful for making your own case better. You often start to see the gaps in your case and prioritize much better. In the absence of writing, you are often able to trick yourself about how carefully thought out your plan is. This is because you are inevitably thinking about it deeply and will be able to answer questions fluidly. But writing convincingly (even to yourself) is a higher bar.</p><blockquote><em>This and the 2nd point are by far the most valuable to me. It is why we should write on any decisions that are important and hard to reverse (hiring being the number 1 example).</em></blockquote><p><strong>2. Help us evaluate the quality of our decision-making in retrospect.</strong></p><p>The act of writing makes the author more articulate, which allows us to go back and make sure we made good decisions. Otherwise, all people are extremely vulnerable to hindsight bias. This has stood out most to me in the hiring processes we have. It’s much easier to evaluate whether someone is good at interviewing by reading their comments at the time of the interview. Whereas, in retrospect, we always think we knew someone was a superstar or had a red flag.</p><p>But it also stands out when you read some of the memos that Tomas (about the direction of the tech team/platform) or I wrote (about the company). And while we both have been wrong often it is MUCH MUCH better than the people who have never written anything. In cases where people don’t document their thinking(for example people who don’t submit details on Lever re: hiring) they almost always remember making decisions for reasons which are correct now in hindsight.</p><p>As a general rule of thumb, if you want me to look back on your decision-making (for the positive) it requires a written-out argument. This was also the purpose of the “decisions” notion page that we have created.</p><p><strong>3. To disseminate information broadly, more quickly</strong></p><p>For a lot of information, you aren’t looking to get feedback, but rather you are just trying to share it broadly. In that case, reading information is by far the most convenient (it is fast and can be done asynchronously).</p><p>Writing also tends to have the lowest amount of miscommunication (fewer memory issues or mishearing). Though it still suffers from the fact that the recipient cannot really know if they are misunderstanding.</p><p>The issue is that the writing often takes more time than sharing in alternative methods that info if the audience ends up being small (&lt;6 people).</p><p><strong>4. To inform future PQ employees</strong></p><p>This is a corollary of <strong>(3),</strong> as new employees join there is more and more institutional knowledge and context. You can never supplant mentorship from your colleagues, but good documentation is a company superpower. It helps get newer employees up to speed much faster. It also helps them avoid mistakes we’ve already made.This is third not because of its importance, but because realistically its just that good writing is not sufficient. As information in a company grows even well-documented and organized information becomes overwhelming. So you end up needing colleagues to curate that information for you anyways.</p><p><strong>5. To help get feedback and helpful outside information more efficiently</strong></p><blockquote><em>This was the biggest myth, I think that comes from the pro-writing world.</em></blockquote><p>The reality is that for most important decisions you want one person making that decision. And once that person is given that authority they can certainly benefit from alternative points of view, but the value is diminishing. The main issue is that no one will be as familiar or care as much as you the decision-maker with the context of the project. So their advice is almost inherently going to be less relevant. The longer you’ve been in ProteinQure the more this will become true. What is somewhat relevant is laying out your assumptions for your decision and having others help validate or reject those assumptions (often by providing facts/sources you simply weren’t aware of). You can also get improvements in grammar, spelling, clarity etc.. but those are usually lower value.</p><p><strong>TL;DR</strong></p><p>Write when you have to make an important decision. Use it to help focus your own decision-making more than anything else.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3bdf55d38b52" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/why-you-should-write-weekly-thoughts-1-5min-3bdf55d38b52">Why you should write [Weekly Thoughts #1] — 5min</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Company consistency vs individual efficiency for company processes [Weekly Thoughts #3] — 3 min]]></title>
            <link>https://medium.com/proteinqure/company-consistency-vs-individual-efficiency-for-company-processes-weekly-thoughts-3-3-min-cd7924e5dc10?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/cd7924e5dc10</guid>
            <category><![CDATA[proteinqure]]></category>
            <category><![CDATA[startup-lessons]]></category>
            <category><![CDATA[startup]]></category>
            <dc:creator><![CDATA[Lucas Siow]]></dc:creator>
            <pubDate>Mon, 11 Apr 2022 16:15:54 GMT</pubDate>
            <atom:updated>2022-04-11T16:32:00.688Z</atom:updated>
            <content:encoded><![CDATA[<h3>Company consistency vs individual efficiency for company processes [Weekly Thoughts #3] — 3 min</h3><p><a href="https://medium.com/proteinqure/a-new-series-of-writing-on-proteinqure-weekly-thoughts-introduction-aacb742558db">Find the introduction to this series</a></p><p>Originally written: Jul 17, 2020</p><p>Editing: For clarity (and making the title more relevant). Thanks to Sean for help here. Changed name to employee ABC.</p><p>Lucas’ Updated Notes: This is a problem that seems to only increase as we grow. I mention multiple project management tools and systems that are no longer used at ProteinQure. These include ClickUp, Monday.com, and agile.</p><p>As of Q1 2022, we tried to center all teams (Tech, ML, Comp Bio, Wetlab, and Business Operations) on Gitlab for project management. For example, there is a BusOps GitLab board for issue tracking which is integrated with slack. I now believe this could easily work for Org’s up to 40 people at least. The hardest part is getting non-software hires acclimated to the toolset.</p><p>Individual efficiency could possibly be better understood as individual productivity/quality.</p><h3>Company consistency vs individual efficiency for company processes</h3><p>This week’s project management meetings highlighted a common conflict (or tension) that any company has to resolve over and over again. And we should avoid the mistaken assumption that it will EVER be solved. I don’t have any personal solutions or great insights at the moment, it&#39;s just something on my mind these days.</p><p>The tension is over whether you can build systems that are appropriate across individuals, projects, and teams simultaneously.</p><blockquote>Making <em>an individual</em> (or small team) maximally productive requires adjusting their particular working styles and preferences. But making <em>a company</em> maximally productive means ensuring people are aligned to the goals and consistent across areas. So you sacrifice some amount of individual level productivity for reducing the overhead at a company level.</blockquote><p>And those choices change for the differing levels of company stage and maturity. So in a fast-growing company, you have to keep adjusting.</p><p>The business operations team is probably a good example of this microcosm:</p><p><strong>Jan 2018 — March 2019: </strong>I was the only member of the team (with support from our part-time accountant). Any company-wide systems that I participated in (Sprints, <a href="http://www.clickup.com">ClickUp</a>, <a href="http://www.monday.com">Monday.com</a>, etc.) didn’t help me do my job. But it was also relatively costless for me to participate. Poor documentation on my part (for example tracking partnerships) didn’t matter either as long as it didn’t hurt performance, because no one else actually depended on the info.</p><p><strong>March — Jul 2019:</strong> When we raised the seed round, it was clear the concept of sprint tasks and the monday.com + agile system wasn’t great for the act of raising a round. Using those tools would just incur overhead. And at the time felt really costly for me (I worked every day except 2 out of a period of 8 weeks straight). There are also negative costs for trying to update everyone all the time on fundraising (it creates distractions).</p><p><strong>Jul 2019 — Dec 2019: </strong>EMPLOYEE ABC joins and the company grows from 6 to 11 people. ABC and my tasks are often overlapping so we need to document and co-ordinate more. Sprint tasks are not great for us (because we often work on very many small tasks and alignment via meetings). But we can put our most important things into Monday.com and it is easy for people to get some insight into what we are working on. We chose to participate in the company systems, despite not being valuable for our team specifically.</p><p><strong>Jan 2020 — Jul 2020: </strong>ProteinQure is about 14 people for most of this period. The operations team is the same size and is using a private board on Monday.com (as well as notion) to help coordinate tasks on a more granular level (e.g. Pay X invoice, add Y person to insurance). Many of our tasks are internal meetings (and meetings more generally). It is hard to think of those tasks (and the same is true of helping with project management) as individual-specific tickets that can be tracked. It&#39;s also becoming less useful for everyone across the company to hear the nitty-gritty of what we work on (SRED credits, COVID Grants etc..).</p><p><strong>August 2020 +: </strong>We are using Gitlab along with the rest of the team (we’ve gotten rid of Monday.com). Though for example, the “Assignment” rules don’t necessarily work for us. We tend to assign all tasks between us and then constantly change what we prioritize. Documentation is kept mostly on Notion, but we don’t tend to need context on each other&#39;s work (just clear distinctions on who is handling what). I would think this is likely to make sense until we have the next round of financing (and a significantly larger business ops organization). <strong><em>We are leaning into consistency with the rest of the company, the biggest benefit of which is not the operations team consistency, but the fact that all technical teams are also bought in.</em></strong></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cd7924e5dc10" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/company-consistency-vs-individual-efficiency-for-company-processes-weekly-thoughts-3-3-min-cd7924e5dc10">Company consistency vs individual efficiency for company processes [Weekly Thoughts #3] — 3 min</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Value of Startup Accelerators (Why we attend) [Weekly Thoughts #2] — 2min]]></title>
            <link>https://medium.com/proteinqure/value-of-startup-accelerators-why-we-attend-weekly-thoughts-2-2min-326ae1a63284?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/326ae1a63284</guid>
            <category><![CDATA[proteinqure]]></category>
            <category><![CDATA[accelerator]]></category>
            <category><![CDATA[startup-lessons]]></category>
            <category><![CDATA[startup]]></category>
            <dc:creator><![CDATA[Lucas Siow]]></dc:creator>
            <pubDate>Mon, 11 Apr 2022 16:13:28 GMT</pubDate>
            <atom:updated>2022-04-11T16:31:33.662Z</atom:updated>
            <content:encoded><![CDATA[<h3>Value of Startup Accelerators (Why we attend) [Weekly Thoughts #2] — 2min</h3><p><a href="https://medium.com/proteinqure/a-new-series-of-writing-on-proteinqure-weekly-thoughts-introduction-aacb742558db">Find the introduction to this series</a></p><p>Originally written: Sep 4, 2020</p><p>Editing: None</p><p>Lucas’ Updated Notes: We in fact did attend all three accelerators here.</p><h3>Value of Startup Accelerators (Why we attend)</h3><p>I am currently applying to three accelerators:</p><ul><li>Google (which we accepted)</li><li>Scaleup by Laziridis Institute in waterloo</li><li>Biology at Endless Frontiers (NYU)</li></ul><p>How valuable are accelerators and incubators? The truth is no one really knows. Unlike what you might see in the news or the startup ecosystem, I expect all of these programs to be of weakly positive value. With the exception of maybe YCombinator, most accelerators are of unknown value. The costs are almost exclusively my (and other attendees&#39;) time (sometimes some travel costs as well). And the benefits vary but can include:</p><h3>Valuable Advice</h3><blockquote>If 10% of advice is valuable, that&#39;s a good incubator.</blockquote><p>Most of it will be from people without context or knowledge of our stage/sector. I don’t think we have ever gotten useful technical advice from one of these programs though I hope that changes with google. We have gotten some useful strategic and industry advice.</p><h3>Network and connections</h3><p>Various programs have different types and structures for their mentors. <em>Getting one good mentor out of a program can make the entire thing worth it.</em> For example, in the San Francisco Canadian Technology Accelerator we had one mentor who had done BD in pharma and helped us with our discussions with one of our largest partners.</p><h3>Marketing and FOMO</h3><p>Particularly in the case of investors, these programs can help create a bit of an auction for fundraising. You get access to numerous investors simultaneously and they get to see the progress you make (hence hopefully incurring FOMO). It is efficient because of how concentrated the audience is.</p><p>As we get closer to needing to fundraise, I will be doing more activities like these. High risk (because you can get zero return), high reward (because you can get 1 lead investor or customer) activities.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=326ae1a63284" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/value-of-startup-accelerators-why-we-attend-weekly-thoughts-2-2min-326ae1a63284">Value of Startup Accelerators (Why we attend) [Weekly Thoughts #2] — 2min</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A new series of writing on ProteinQure [Weekly Thoughts Introduction]]]></title>
            <link>https://medium.com/proteinqure/a-new-series-of-writing-on-proteinqure-weekly-thoughts-introduction-aacb742558db?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/aacb742558db</guid>
            <category><![CDATA[startup]]></category>
            <category><![CDATA[startup-lessons]]></category>
            <category><![CDATA[proteinqure]]></category>
            <category><![CDATA[startup-life]]></category>
            <dc:creator><![CDATA[Lucas Siow]]></dc:creator>
            <pubDate>Mon, 11 Apr 2022 16:10:27 GMT</pubDate>
            <atom:updated>2022-04-11T16:23:27.887Z</atom:updated>
            <content:encoded><![CDATA[<p>We’ve decided to create a series of blog posts sharing a subset of my weekly thoughts publically.</p><p>If you don’t want the context you can skip to the links to some content at the bottom.</p><h3>The goal of making this writing public is</h3><p>a) Help other startup companies especially in techbio space, with our musing and evolution on a variety of topics related to drug discovery, company building, and processes for startups.</p><p>b) Share more about our culture for the benefit of potential employees at ProteinQure.</p><p>c) Potentially improve our own thinking via feedback or commentary from more experienced folks who read and comment on the ideas.</p><h3>What are my weekly thoughts?</h3><p>Since mid-2019 I have written a weekly summary email about the company. In addition to basic information (important upcoming events, OKR updates, readme information, etc.), I write a section on what I am thinking about. The section is pretty free form and is geared towards internal consumption, but isn’t necessarily meant to be relevant to the whole team.</p><p>I am pretty good about being consistent with this. Given 52 weeks, we usually do about 50 updates (often skipping Christmas and New Year). We have guest writers 2–4 a year (often when I am on vacation), but overall I have probably written 45+ times a year for the last three years. Ten to twenty percent of the thoughts might be shorter (1–2 paragraphs) or repeated information. A few times a year they will be a long (5–6 pages) memo.</p><p>I hope to put up 10–15 over the course of 2022. Redacted as appropriate.</p><h3>What are they not?</h3><p><em>They are not meant to be completely original thoughts. </em>They are my thinking on a topic. This means they could simply be a synthesis of books I’ve read or advice from founders and others I’ve spoken to. I try to attribute where I can remember, but I may not.</p><p><em>They are not meant to be well-cited or extremely detailed.</em> Over time I’ve learned that shorter thoughts, lead to much more engagement from employees. Too much detailed reasoning is actually counterproductive. Citations usually cost me a lot of time and don’t add anything for most readers internally.</p><p><em>They are not in chronological order.</em> Partly because we shifted away from Protonmail in early 2020 and didn’t document those ones as well. But also because I am trying to curate the ones I think are useful and have some flow (thanks to many people at PQ for helping with that).</p><h3>They are lightly edited</h3><p>I’ve decided to try and preserve the authenticness of the writing, by mostly posting very close to original writing. I include the date of posting in each post and any updated reflections I have on the work. In many cases, I would love to expand on some of the topics in more detail, but am trying to keep these a balance of short, useful, and authentic.</p><h3>The first three thoughts (click links)</h3><p><a href="https://medium.com/@lucas.siow/why-you-should-write-weekly-thoughts-1-5min-3bdf55d38b52">Why you should write more [Weekly Thoughts #1]</a></p><p><a href="https://medium.com/@lucas.siow/value-of-startup-accelerators-why-we-attend-weekly-thoughts-2-2min-326ae1a63284">The value of startup accelerators [Weekly Thoughts #2]</a></p><p><a href="https://medium.com/@lucas.siow/company-consistency-vs-individual-efficiency-for-company-processes-weekly-thoughts-3-3-min-cd7924e5dc10">Company consistency vs individual efficiency [Weekly Thoughts #3]</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=aacb742558db" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/a-new-series-of-writing-on-proteinqure-weekly-thoughts-introduction-aacb742558db">A new series of writing on ProteinQure [Weekly Thoughts Introduction]</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AlphaFold Quickstart on AWS]]></title>
            <link>https://medium.com/proteinqure/alphafold-quickstart-on-aws-9ba20692c98e?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/9ba20692c98e</guid>
            <category><![CDATA[deep-neural-networks]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[alphafold]]></category>
            <category><![CDATA[protein-folding]]></category>
            <category><![CDATA[drug-design]]></category>
            <dc:creator><![CDATA[Eugene Brodsky]]></dc:creator>
            <pubDate>Thu, 22 Jul 2021 22:55:18 GMT</pubDate>
            <atom:updated>2021-07-23T00:37:50.892Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Xzyws5XvdahABw8RLz6N5w.png" /></figure><p>AlphaFold 2.0 is widely regarded as a breakthrough milestone in predicting 3D structures of proteins using a Deep Neural Network approach. Naturally, when the AlphaFold <a href="https://www.nature.com/articles/s41586-021-03819-2">paper</a> was published and its <a href="https://github.com/deepmind/alphafold">source code</a> made publicly available earlier this month, we curious folks at <a href="https://proteinqure.com">ProteinQure</a> could not resist the temptation to take it for a spin ourselves. This blog post details our process for getting it running on a GPU-capable instance using the AWS Deep Learning AMI, and documents some workarounds for potentially unexpected pitfalls.</p><p>For the purposes of this post, we’ll assume you already have an AWS account and are somewhat comfortable with its use and related terminology. It is also worth mentioning that this experimentation isn’t free (but not insurmountably expensive either), and we’ll mention some cost saving techniques along the way. With this post we are aiming to provide a high-level overview of the process, but would be happy to reply in the comments with additional technical clarifications.</p><p>With that out of the way, let’s get started!</p><p><em>TL;DR: to just see how we fixed the GPU not being recognized, skip to step 6.</em></p><h3>1. Pick your (virtual) hardware</h3><p>You will presumably want to run the actual workload on a GPU-capable instance, but you will quickly see that a large chunk of time will be spent downloading the datasets required by AlphaFold. There’s no reason to run an expensive GPU instance for this menial task. So, we will use two instances in this experiment:</p><ul><li>A <strong>t3a.large</strong> instance as our downloading workhorse. It offers 2 vCPUs and 8GB of RAM at $0.0752/hr. The download will take <em>many</em> hours, so we can expect this to cost somewhere between $3 and $6. The reason we want to pick a large instance type is because of the archive extraction step that follows the download. If we pick a smaller instance, we may exhaust our CPU credits and the extraction will slow down to a crawl.</li><li>A <strong>p3.2xlarge </strong>instance as our AlphaFold runner. It offers one NVIDIA Tesla V100 GPU, which is perfectly capable for our purpose. AlphaFold supports multiple GPUs, but currently has some <a href="https://github.com/deepmind/alphafold/issues/30">issues</a> using them reliably.</li></ul><p>💡 To be clear, if you have deep pockets or just don’t want to bother, it’s totally fine to do the downloading on the GPU instance and save yourself the hassle. In that case, adjust accordingly while following the walk-through.</p><h3>2. Create a persistent volume to hold your data</h3><p>AlphaFold databases, once downloaded and uncompressed, will require just over 2.5TB of disk space. We certainly wouldn’t want this to be accidentally lost if we terminate our instances. For this, we’ll navigate to EBS and create a dedicated data volume with the following parameters:</p><ul><li>Volume type: <strong>gp3</strong>. It has a good balance of cost and performance, and you can increase its IOPS and throughput as necessary</li><li>Capacity: <strong>3TB</strong>. You don’t want to run out of space!</li><li>IOPS/Througput: This is a tricky one. One of the steps during AlphaFold inference will be bottlenecked by I/O, but also you don’t want to overpay for this. We recommend leaving IOPS at the default value of <em>3,000, </em>but bumping the throughput to at least <em>300MB/s</em> from the default <em>125</em>. But we haven’t experimentally A/B tested this, and this is <em>not likely</em> to be a major performance bottleneck.</li></ul><p>Make sure to give your volume a name so you can find it later in the EBS volume list.</p><p>Make <strong>especially </strong>sure that you stick to only a single Availability Zone (e.g. us-east-2b) when you create the volume AND your instances, as you can not attach EBS volumes to instances in different AZs! Check that your preferred GPU instance type is available in your selected AZ.</p><h3>3. Set up the downloader instance</h3><p>Let’s run a new <strong>t3a.large </strong>instance using an Ubuntu AMI (any version).</p><ol><li>Attach the data volume you created in the previous step, for example at /dev/sdc, which will make it visible in the OS at /dev/xvdc.</li><li>Log in to the instance and verify this with lsblk — you should see /dev/xvdc as the last block device on the list.</li><li>Create a partition, format it with xfs, and mount it under /data:</li></ol><pre>$ sudo mkfs.xfs /dev/xvdc<br>$ sudo mkdir /data<br>$ sudo chmod 777 /data<br>$ sudo mount /dev/xvdc1 /data<br>$ df -h /data <br>Filesystem      Size  Used Avail Use% Mounted on<br>/dev/xvdc1      3T    0B   3T    0%   /data</pre><p>4. Install the prerequisites:</p><pre>$ sudo apt update &amp;&amp; sudo apt install -y git aria2 rsync tmux</pre><h3>4. Pull down code and databases</h3><p>This is somewhat redundant to the <a href="https://github.com/deepmind/alphafold">official documentation</a>, but worth mentioning here. For clarity, we will <strong>not </strong>be building any Docker images or testing GPU capabilities (we have no GPU) just yet. We’re only here to download the databases.</p><p>💡 <em>A couple of things worth noting here.</em><strong><em> First</em></strong><em>, notice how we installed </em><em>tmux in the previous step. Using </em><em>tmux is a great way to not lose your console session if your SSH connection drops. You simply run </em><em>tmuxas the first command when you </em><em>ssh in to the instance. A </em><em>tmux tutorial is definitely out of scope for this post, but now you have some terms to fuel your search, if you’re not familiar with it already! </em><strong><em>Second</em></strong><em>, it is possible to speed up your downloads by: 1) running them in concurrent </em><em>tmux windows (or sessions), and 2) modifying the individual download scripts (under </em><em>scripts/) by adding </em><em>-s8 -x8 options to the </em><em>aria2c commands. However, </em><strong><em>note: </em></strong><em>this puts additional load on the servers hosting the data, some of them belonging to academic institutions. So, having been armed with this knowledge, please use this in moderation and consider being a good citizen of the internet!</em></p><p>With that out of the way, let’s download:</p><pre>$ cd /data<br>$ git clone <a href="https://github.com/deepmind/alphafold.git">https://github.com/deepmind/alphafold.git</a><br>$ mkdir af_databases<br>$ scripts/download_all_data.sh /data/af_databases<br>$ ### (OR use the individual download scripts)</pre><p>This will take a looooong time. While that’s happening, we can set up our AlphaFold GPU runner instance.</p><h3>5. Spin up the runner</h3><p>Let’s create a <strong>p3.2xlarge </strong>instance in the AWS console. Use the AWS Deep Learning AMI for this purpose (Ubuntu 18.04). This is actually one of the easiest steps in this entire tutorial: you don’t need do much about this machine. Once started and you’ve logged in to it, install a couple of missing prerequisites (the others are already present):</p><pre>$ sudo apt update &amp;&amp; sudo apt install -y aria2 rsync tmux</pre><p>You can skip the <em>First Time Setup </em>section of the official documentation: the NVIDIA container toolkit and Docker are pre-installed 🙌. Let’s check that the GPUs are usable by Dockerized workloads (as per official docs):</p><pre>$ docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi</pre><p>The databases are still being downloaded on the other instance, so we will only run a <em>modified</em> subset of commands from the <a href="https://github.com/deepmind/alphafold#running-alphafold">Running AlphaFold section of the official docs</a> to to build the Docker image and install prerequisites:</p><pre>$ cd<br>$ git clone <a href="https://github.com/deepmind/alphafold.git">https://github.com/deepmind/alphafold.git</a><br>$ cd alphafold<br>$ docker build -f docker/Dockerfile -t alphafold .<br>$ pip3 install -U -r docker/requirements.txt<br>$ cd<br>$ rm -rf alphafold</pre><p>Yes, we removed the cloned directory in the last step. Why is that? Because we already have it saved on the data disk (still in use by the download), we’ll be working from there, and we don’t like getting confused!</p><p>Now all we can do is wait for the downloads to complete. It’s advisable to stop (NOT terminate!) the GPU instance at this time, and go for a long walk.</p><h4>once the downloads are done…</h4><p>…(and finished unarchiving, which will take a non-trivial amount of time as well; aim for ~3 hours!), we have a very precious 3TB EBS volume on our hands. We could optionally make a snapshot of it for safekeeping, depending on our future use cases.</p><p>Let’s stop our downloader instance and detach the data volume ( /dev/sdc if you were following along). We can now attach it to our GPU instance, also at /dev/sdc for consistency.</p><p>Start the GPU instance and SSH into it. Mount the data volume:</p><pre>$ sudo mkdir /data<br>$ sudo chmod 777 /data<br>$ sudo mount /dev/xvdc1 /data<br>$ cd /data</pre><p>You should see the contents of the volume just as they were on the downloader instance.</p><h3>6. Fix the issue with GPUs not being recognized</h3><p>Now we’ve finally gotten to the meat of the issue. This is what prompted the writing of this blog post in the first place.</p><p>If you were to run the AlphaFold code right now as per the docs, you might (or might not!) notice that the GPUs are not actually being used. This is evidenced by the following log gnarliness:</p><pre>I0716 20:25:31.123608 139790799320896 run_docker.py:180] 2021-07-16 20:25:31.123045: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library &#39;libcusolver.so.11&#39;; dlerror: libcusolver.so.11: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64<br>I0716 20:25:31.124151 139790799320896 run_docker.py:180] 2021-07-16 20:25:31.123767: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library &#39;libcudnn.so.8&#39;; dlerror: libcudnn.so.8: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/nvidia/lib:/usr/local/nvidia/lib64<br>I0716 20:25:31.124289 139790799320896 run_docker.py:180] 2021-07-16 20:25:31.123807: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1766] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at <a href="https://www.tensorf/">https://www.tensorf</a>low.org/install/gpu for how to download and setup the required libraries for your platform.<br>I0716 20:25:31.124416 139790799320896 run_docker.py:180] Skipping registering GPU devices...</pre><p>But this is a GPU-enabled instance, and the tests ran fine, you might say? Well, it seems that the Docker image we’ve built is <a href="https://github.com/deepmind/alphafold/issues/26">missing CUDA libs</a> (though a pull request is open that should hopefully fix it).</p><p>Thankfully, the AWS Deep Learning AMI we’re using comes pre-installed with CUDA 11.1 and CuDNN libraries that are required by TensorFlow. They are located, as expected, under /usr/local/cuda-11.1/. All we need to do is get them into the container, and modify the LD_LIBRARY_PATH variable such that TensorFlow can actually find these libraries. This can be easily tested by running a Docker container, like so:</p><pre>$ docker run --rm -it --gpus=all --entrypoint bash -v /usr/local/cuda-11.1/:/usr/local/cuda-11.1 -e LD_LIBRARY_PATH=/usr/local/cuda:/usr/local/cuda-11.1/lib64:/usr/local/nvidia/lib:/usr/local/nvidia/lib64 alphafold<br># python<br>Python 3.8.5 (default, Sep  4 2020, 07:30:14)<br>[GCC 7.3.0] :: Anaconda, Inc. on linux<br>Type &quot;help&quot;, &quot;copyright&quot;, &quot;credits&quot; or &quot;license&quot; for more information.<br>&gt;&gt;&gt; import tensorflow as tf<br>2021-07-16 21:05:17.623154: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0<br>&gt;&gt;&gt; tf.config.list_physical_devices(&#39;GPU&#39;)<br>2021-07-16 21:05:21.849962: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcuda.so.1<br>...<br>tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] Found device 0 with properties:<br>pciBusID: 0000:00:1b.0 name: Tesla V100-SXM2-16GB computeCapability: 7.0<br>coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB<br>...<br>2021-07-16 21:05:22.037939: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1733] Found device 3 with properties:<br>pciBusID: 0000:00:1e.0 name: Tesla V100-SXM2-16GB computeCapability: 7.0<br>coreClock: 1.53GHz coreCount: 80 deviceMemorySize: 15.78GiB deviceMemoryBandwidth: 836.37GiB/s<br>2021-07-16 21:05:22.037987: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0<br>2021-07-16 21:05:22.041155: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcublas.so.11<br>...<br>...<br>2021-07-16 21:29:20.397608: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1871] Adding visible gpu devices: 0, 1, 2, 3<br>[PhysicalDevice(name=&#39;/physical_device:GPU:0&#39;, device_type=&#39;GPU&#39;), PhysicalDevice(name=&#39;/physical_device:GPU:1&#39;, device_type=&#39;GPU&#39;), PhysicalDevice(name=&#39;/physical_device:GPU:2&#39;, device_type=&#39;GPU&#39;), PhysicalDevice(name=&#39;/physical_device:GPU:3&#39;, device_type=&#39;GPU&#39;)]</pre><p>Success! We’ve proven that there is a solution. But we’re not done yet. We now need to modify the docker/run_docker.py script to bake this fix into AlphaFold itself.</p><p>To accomplish this, we modify the docker/run_docker.py script described in this pull request: <a href="https://github.com/ProteinQure/alphafold/pull/1/files">https://github.com/ProteinQure/alphafold/pull/1/files</a>. The change would be too tedious to post here in its entirety, but we are simply doing two things:</p><ol><li>Mounting the CUDA libraries from the host;</li><li>Setting the LD_LIBRARY_PATH environment variable (admittedly in a very brutal and clobbering way) to include the paths to these libraries</li></ol><p><strong>And that’s all there is to it!</strong> You’re ready to Fold!</p><p>Please carefully read the official documentation and make sure you <strong>do</strong> set the database dir as well as modify the output paths in your docker/run_docker.py script. Ensuring these directories exist and are writable is left as an exercise to the reader. We highly recommend all this data be kept on your 3TB data drive. In the original script, the outputs are going to /tmp/..., so pay attention.</p><h4>Finally…</h4><p>Don’t forget that you’re paying for all of these resources. Watch your bill carefully. If you’re feeling adventurous, you can also try to use AWS Spot instances to reduce your spend, but this is an advanced topic requiring a non-trivial amount of automation. If you’re going down this route, we recommend running your workloads on Kubernetes. We’d be happy to share how we do this at <a href="https://medium.com/u/ae69b14ee588">ProteinQure!</a></p><h3>Conclusion</h3><p>In this post, we walked through the process of setting up a functional AlphaFold environment on AWS, including some cost-management techniques, and proposed a fix for an issue with missing CUDA libraries that seems to be a blocker for many people trying to run AlphaFold in their environments.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9ba20692c98e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/alphafold-quickstart-on-aws-9ba20692c98e">AlphaFold Quickstart on AWS</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Auto-fixing annoyances with Black and Pylint]]></title>
            <link>https://medium.com/proteinqure/auto-fixing-annoyances-with-black-and-pylint-56564811c031?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/56564811c031</guid>
            <category><![CDATA[python]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[data-science]]></category>
            <dc:creator><![CDATA[Sean Aubin]]></dc:creator>
            <pubDate>Fri, 18 Jun 2021 15:20:09 GMT</pubDate>
            <atom:updated>2021-06-21T14:22:40.349Z</atom:updated>
            <content:encoded><![CDATA[<p>In the <a href="https://medium.com/proteinqure/better-code-with-less-typing-7893fa171e17">previous post</a>, we discussed using Visual Studio Code to enhance Python editing with various features, such syntax highlighting and keyboard shortcuts. This post introduces the tools <a href="https://www.pylint.org/">Pylint</a> and <a href="https://black.readthedocs.io/en/stable/">Black</a> for automatically resolving Python code-style problems.</p><p>If you’re new to Python, these two pieces of code might seem a bit contrived, but otherwise functional:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c942036be25a3ce988d7e4cfd3056baf/href">https://medium.com/media/c942036be25a3ce988d7e4cfd3056baf/href</a></iframe><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ac5912b808d2de525211bf60a74b8744/href">https://medium.com/media/ac5912b808d2de525211bf60a74b8744/href</a></iframe><p>However, an experienced Python developer will have a hard time reading it and will find one bug. Luckily, there are tools to give you this same insight!</p><h3>Auto-formatting with Black</h3><p>Every <a href="https://en.wiktionary.org/wiki/Pythonista">Pythonista</a>, left to their own devices, will come up with their own conventions and implement them with copious manual insertion of whitespace. This is tedious as an individual, but disastrous when collaborating with others as formatting preferences clash. Consistent formatting is essential for enabling readers/reviewers to focus on logic, instead of being distracted style.</p><p>Luckily, most programming languages have an auto-formatter which inserts the appropriate whitespace in your code. For Python, this is Black.</p><p>Black takes awkwardly formatted (but still runnable!) code:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c942036be25a3ce988d7e4cfd3056baf/href">https://medium.com/media/c942036be25a3ce988d7e4cfd3056baf/href</a></iframe><p>And gives you code with sensible whitespace:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c068445167797ee5465ce7e7d2d382e3/href">https://medium.com/media/c068445167797ee5465ce7e7d2d382e3/href</a></iframe><p>Black also automatically breaks up long or nested lines of code into multiple lines.</p><p>You may find Black clashes with the conventions you’ve developed over the years. You will have to get over it. Black is purposely not configurable. If arguing about code style is the most futile conversation one can have, discussing an auto-formatter’s configuration is a close second. Instead, I recommend spending time developing opinions on other matters, such as music or <a href="https://www.cbc.ca/radio/asithappens/as-it-happens-tuesday-edition-1.3991263/canadian-inventor-of-hawaiian-pizza-defends-pineapple-after-iceland-s-president-disses-fruit-topping-1.3992890">pizza toppings</a>.</p><h3>Integrating Black with Visual Studio Code</h3><p>Visual Studio Code’s can be found under File -&gt; Preferences -&gt; Settings. In the top-right corner, there should be an icon to Open Settings (JSON). You should see something that looks like a Python dictionary, but with curly braces:</p><pre>{<br>    &quot;editor.formatOnSave&quot;: true,<br>    &quot;editor.renderWhitespace&quot;: &quot;all&quot;,<br>    &quot;files.autoSave&quot;: &quot;afterDelay&quot;,<br>    &quot;python.analysis.typeCheckingMode&quot;: &quot;basic&quot;,<br>    &quot;python.formatting.provider&quot;: &quot;black&quot;,<br>    &quot;python.formatting.blackArgs&quot;: [<br>        &quot;--line-length=120&quot;<br>    ],<br>}</pre><p>Although I do personally recommend all of these settings, the most important one is “python.formatting.provider”: “black”, which will allow you to run black with the keyboard shortcut CTRL+SHIFT+I.</p><h3>Auto-check with Pylint</h3><p>Python is a big, old language. There are many ways to do things. Some of them are very wrong. Finding out which ones are wrong and why usually involves someone more experienced than you reading over your code.</p><p>However, many common mistakes can be detected automatically with Pylint.</p><p>For example, if you want to pass a list as a default argument to a function, you may write something like this:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ac5912b808d2de525211bf60a74b8744/href">https://medium.com/media/ac5912b808d2de525211bf60a74b8744/href</a></iframe><p>This is <a href="https://docs.python-guide.org/writing/gotchas/#mutable-default-arguments">a common mistake</a> in Python. If you run Pylint from the command-line:</p><pre>pylint bad_code.py</pre><p>It will warn you:</p><pre>Dangerous default value [] as argument (dangerous-default-value)</pre><p>Which allows you to implement the following fix:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/1aad06a90057b72e9eaa5dc089908033/href">https://medium.com/media/1aad06a90057b72e9eaa5dc089908033/href</a></iframe><p>Pylint has many such code problems it can check for. Some of them are more annoying than helpful, but Pylint lets you ignore many of them.</p><p><a href="https://gist.github.com/Seanny123/ae47c0184da93101640c87ead510590a">Here’s an extremely conservative list of ones I ignore</a>, based on my years of working with Python, pastable into your pyproject.toml at the root of your project. Alternatively, you can slowly add to your own list every time you get annoyed.</p><h3>Integrating Pylint with Visual Studio Code</h3><p>Linting is turned on by default in Visual Studio Code. Additionally, if you have a pyproject.toml file in the root directory of the project you&#39;re working on, it will be detected and use by Pylint automatically, so there&#39;s no configuration required.</p><p>This post continued on the theme of using tools to make good coding habits painless and automatic. You can learn to do consistent formatting and avoid Python’s pitfalls with hard-earned experience, but using Pylint and Black is so much easier! In addition to reducing individual suffering, these tools allow collaborators of various skill levels to reach a baseline of quality. Similarly, the next post in the series will cover automatically detecting accidental code breakage with Pytest.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=56564811c031" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/auto-fixing-annoyances-with-black-and-pylint-56564811c031">Auto-fixing annoyances with Black and Pylint</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Better Code with Less Typing]]></title>
            <link>https://medium.com/proteinqure/better-code-with-less-typing-7893fa171e17?source=rss----c68ae32210c1---4</link>
            <guid isPermaLink="false">https://medium.com/p/7893fa171e17</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[Sean Aubin]]></dc:creator>
            <pubDate>Tue, 26 Jan 2021 20:02:59 GMT</pubDate>
            <atom:updated>2021-05-20T15:32:44.433Z</atom:updated>
            <content:encoded><![CDATA[<h4>Choosing a good code editor for science</h4><p>If an artist is only as good as their tools, then I spent years finger-painting, followed by years getting hand cramps from paint-brushes I couldn’t figure out how to hold correctly.</p><p>When I was in High School, I used to write HTML in Notepad. Then my friend showed me Notepad++ and I was astonished by how much easier it made so many tasks.</p><p>When I started writing in Python, I kept using Notepad++, which really isn’t suited for extensive code editing. Then I spent several years trying and failing to configure and master Vim and Emacs.</p><p>Years later, I discovered there was a middle ground between using rudimentary tools and spending days configuring esoteric editors.</p><h3>Visual Studio Code or Pycharm</h3><p>Both Visual Studio Code and Pycharm were created with Python in mind. They have features like:</p><ul><li><strong>Syntax Highlighting</strong> Making code easier to read with colours differentiating constants, variables… etc.</li><li><strong>Code Completion</strong> Like your phone’s auto-complete, but for code.</li><li><strong>Tool Tips</strong> Documentation and hint pop-ups when hovering your cursor over a piece of code.</li></ul><p>All enabled without any configuration!</p><p>They’re both good, but I have a slight preference towards Visual Studio Code, because it’s faster to start up. So the links and keyboard shortcuts in the following discussion will be Visual Studio Code specific.</p><h3>Everyday commands you should know</h3><p>In each editor, there are a few commands which are absolutely essential to leverage:</p><ul><li><strong>Go to definition</strong> Find where a function was defined or where a variable was declared with F12. Faster and more accurate than scrolling or searching the full text with Ctrl+F!</li><li><strong>Find all references</strong> Find where a function is used in your project using Shift+Alt+F12. Especially useful when you want to change a function&#39;s parameters without breaking your code in several places.</li><li><strong>Rename symbol</strong> Rename a variable using F2, instead of using find-and-replace to and accidentally changing something unrelated!</li><li><strong>Multi-cursor editing</strong> Although the find-and-replace functionality of Visual Studio Code is powerful, I sometimes find it hard to track which parts I’m changing. Instead, I like to use mutli-cursor editing, wherein I highlight the text I want to change and use Ctrl+D to spawn a cursor at the next occurrence. This is difficult to explain textually, so try it out for yourself!</li></ul><p>If you have trouble remembering keyboard shortcuts, both editors have the <a href="https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette">Command Palette</a>, which lets you type the full command name, instead of hunting through drop-down menus.</p><p>I use the Command Palette everyday. However, I also recommend the tried and true method of printing out a cheat sheet and taping it to the side of your monitor.</p><p>In the next post, we’ll keep building on the theme of small changes to coding habits and environment with significant benefits. Specifically, we’ll cover how to avoid bugs without running code and how to stop arguing with your collaborators over code formatting.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7893fa171e17" width="1" height="1" alt=""><hr><p><a href="https://medium.com/proteinqure/better-code-with-less-typing-7893fa171e17">Better Code with Less Typing</a> was originally published in <a href="https://medium.com/proteinqure">ProteinQure</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>