{"id":549,"date":"2022-05-12T19:15:34","date_gmt":"2022-05-12T19:15:34","guid":{"rendered":"https:\/\/terrabioappdev.wpenginepowered.com\/ten-simple-rules-5-design-for-testing\/"},"modified":"2023-12-27T04:55:26","modified_gmt":"2023-12-27T04:55:26","slug":"ten-simple-rules-5-design-for-testing","status":"publish","type":"post","link":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/","title":{"rendered":"Ten simple rules \u2014 #5 Design for testing"},"content":{"rendered":"<p><i><span style=\"font-weight: 400;\">This blog post is part of a series based on the paper <\/span><\/i><a href=\"https:\/\/journals.plos.org\/ploscompbiol\/article?id=10.1371\/journal.pcbi.1009757\"><i><span style=\"font-weight: 400;\">&#8220;Ten simple rules for large-scale data processing&#8221;<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> by Arkarachai Fungtammasan et al. (PLOS Computational Biology, 2022). Each installment reviews one of the rules proposed by the authors and illustrates how it can be applied when working in Terra. In this installment, we dig into the importance of testing tools and pipelines before applying them on novel data, and we highlight how Terra&#8217;s workflow system enables efficient end-to-end testing in practice and at scale.<\/span><\/i><\/p>\n<hr \/>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Finally we get a chance to pick up this series again! We had left things off with <\/span><a href=\"https:\/\/terra.bio\/ten-simple-rules-4-automate-your-workflows\/\"><span style=\"font-weight: 400;\">Rule #4: Automate your workflows<\/span><\/a><span style=\"font-weight: 400;\">, which is one of my favorite topics to write about because so many people are still missing out on the benefits of automation. This next rule is in some ways an extension \u2014 or perhaps a specific application \u2014 of the concepts we discussed previously.\u00a0\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With this fifth rule, Arkarachai Fungtammasan and colleagues make yet another unimpeachable point:<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">&#8220;A key element of a large-scale data processing effort is a robust set of test examples that can be easily run.&#8221;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">My only quibble is that I&#8217;d love to see the purpose stated a little more explicitly. There are multiple things you can achieve by running tests on your analysis tools \u2013 from ferreting out basic programming errors (bugs) to handling weird edge cases and malformed data. Based on the specific points they raise, I assume that the main purpose the authors have in mind for testing here is to ensure that running the end-to-end analysis produces correct results across a range of input conditions (shallow vs deep sequencing etc).\u00a0<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">&#8220;If the goal is to process sequencing data, including studies with particularly deep sequencing and particularly shallow sequencing can be wise. In sequencing data, it is possible that reads may be sorted or in arbitrary order: make sure that variable patterns that can be expected in valid input are covered by tests. If files can be derived from multiple sources, using different technologies, or are in multiple formats, include examples of each possible case.&#8221;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In short, this amounts to saying &#8220;before you run anything on new data, you should run it on known data of the same type&#8221;. A very sensible recommendation, and one that could save you a lot of time and money that you might otherwise spend learning a painful lesson about obscure data type-specific parameters.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In the last paragraph, the authors also tease the question of handling errors that arise when running in production, which they later cover more in detail in &#8220;Rule 9: Learn to recover from failures&#8221;. Briefly, the idea is that when something inevitably fails because of an edge case, spewing invalid output \u2013 or no output \u2013 or &#8220;hanging&#8221; indefinitely (where the analysis no longer progresses but the software does not exit), you want to have some predetermined logic to handle the problem efficiently, either in the code or in your post-analysis process:<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">&#8220;It is also wise to test with invalid inputs and cases that are expected to fail such as inputs that are too large, too small, or malformed. Determining what errors are observed and using these error states to annotate inputs with unknown validity can help to triage data that fail to process.&#8221;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">So in that case it&#8217;s not so much about testing tools or pipelines to address correctness issues before deploying them into production; it&#8217;s about identifying what could fail due to issues in the data itself and determining how to handle those failures.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-large wp-image-1307\" src=\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/error_message-1024x73.png\" alt=\"\" width=\"800\" height=\"57\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Of course you may not be able to plan for every possible eventuality \u2014 every so often, someone invents a new sequencing technology that comes with exciting new error modes \u2013 and therefore, over time, you will probably have to add new test cases to your test suite:<\/span><\/p>\n<p style=\"padding-left: 40px;\"><span style=\"font-weight: 400;\">&#8220;Be prepared to extend the test set as new edge cases present themselves.&#8221;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">That adds an important requirement to how you&#8217;re going to do the testing: it has to be relatively easy to add a new test case to your test suite without disrupting ongoing production work.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Which brings us to the &#8220;how do you do this stuff in practice&#8221; part of the discussion.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-weight: 400;\">Doing it in practice and at scale with Terra<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Folks with a background in software engineering will probably say, oh, we have standardized tools and approaches for doing this sort of thing. For example, there are &#8220;continuous integration&#8221; tools that can be configured to pull code from github and run preconfigured test suites. That is something larger, software development-focused teams (like the <\/span><a href=\"https:\/\/gatk.broadinstitute.org\/\"><span style=\"font-weight: 400;\">GATK<\/span><\/a><span style=\"font-weight: 400;\"> team) rely on extensively for testing their code. However, the tools involved can be difficult to set up if you don&#8217;t have a software engineering background, which is the case of many bioinformaticians whose job is not to write new tools but to apply existing tools appropriately to scientific analysis use cases.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Another problem is that those test suite tools are often designed more for small-scale testing of individual steps than for full-scale testing of end-to-end analyses. It can be difficult to apply them to use cases like running a whole genome analysis pipeline on a battery of different sets of inputs. That&#8217;s often done manually, which sets constraints on the amount and complexity of test variables you might be willing or able to consider including in your test suite.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>In contrast, Terra lends itself very well to this kind of end-to-end testing.<\/strong> You can set up as many different input configurations as you like, for individual workflows or even workflows of workflows (yay imports). Since the workflow system handles all aspects of execution on the cloud, including massive parallelization and linking to outputs in data tables, maintaining and executing a comprehensive test suite becomes accessible to just about everyone regardless of background.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">&#8220;But Geraldine,&#8221; I hear some of you say, &#8220;I don&#8217;t <\/span><i><span style=\"font-weight: 400;\">want<\/span><\/i><span style=\"font-weight: 400;\"> to have to set up dozens of individual runs of pipeline tests through a graphical interface. It&#8217;s too much clicking!&#8221;\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The good news is that you don&#8217;t <\/span><i><span style=\"font-weight: 400;\">have<\/span><\/i><span style=\"font-weight: 400;\"> to go through the web interface to either set up or run your test suite. You can write scripts in either Python or R to manage test data, set up workflow configurations and launch workflows programmatically using a library called FISS, as described <\/span><a href=\"https:\/\/support.terra.bio\/hc\/en-us\/articles\/360042259232-Manage-data-automate-workflows-with-the-FISS-API\"><span style=\"font-weight: 400;\">in the Terra documentation<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We know of multiple groups who use this capability to run end-to-end tests of their software tools and pipelines at scale; some even use git actions to trigger test runs automatically when they commit or release new code in Github.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">If you&#8217;re interested in trying this out, check out <\/span><a href=\"https:\/\/support.terra.bio\/hc\/en-us\/articles\/360042259232-Manage-data-automate-workflows-with-the-FISS-API\"><span style=\"font-weight: 400;\">the doc<\/span><\/a><span style=\"font-weight: 400;\"> and the <\/span><a href=\"https:\/\/app.terra.bio\/#workspaces\/help-terra\/FISS%20Tutorial\"><span style=\"font-weight: 400;\">FISS Tutorial workspace<\/span><\/a><span style=\"font-weight: 400;\">, which includes several <\/span><a href=\"https:\/\/app.terra.bio\/#workspaces\/help-terra\/FISS%20Tutorial\/notebooks\"><span style=\"font-weight: 400;\">notebooks<\/span><\/a><span style=\"font-weight: 400;\"> detailing how to use FISS in practice. <\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p>&nbsp;<\/p>\n<hr \/>\n<p><i><span style=\"font-weight: 400;\">Note: At time of writing, the tutorial for setting up and launching workflows using FISS is still in development. However the workspace and data management tutorials are already complete and are a great way to get started with FISS and the Terra API.\u00a0<\/span><\/i><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>End-to-end testing of tools and pipelines in practice and at scale; inspired by \u201cTen simple rules for large-scale data processing\u201d (Fungtammasan 2022).<\/p>\n","protected":false},"author":4,"featured_media":551,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[119,32],"tags":[179],"class_list":["post-549","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-most-recent","category-workflows","tag-ten-simple-rules"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ten simple rules \u2014 #5 Design for testing - Terra<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ten simple rules \u2014 #5 Design for testing - Terra\" \/>\n<meta property=\"og:description\" content=\"End-to-end testing of tools and pipelines in practice and at scale; inspired by \u201cTen simple rules for large-scale data processing\u201d (Fungtammasan 2022).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/\" \/>\n<meta property=\"og:site_name\" content=\"Terra\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-12T19:15:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-27T04:55:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Geraldine Van der Auwera\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Geraldine Van der Auwera\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/\"},\"author\":{\"name\":\"Geraldine Van der Auwera\",\"@id\":\"https:\/\/terra.bio\/#\/schema\/person\/ad0522d0b331a5e08fa1733f65086ee2\"},\"headline\":\"Ten simple rules \u2014 #5 Design for testing\",\"datePublished\":\"2022-05-12T19:15:34+00:00\",\"dateModified\":\"2023-12-27T04:55:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/\"},\"wordCount\":1177,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/terra.bio\/#organization\"},\"image\":{\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png\",\"keywords\":[\"ten simple rules\"],\"articleSection\":[\"Most Recent\",\"Workflows\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/\",\"url\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/\",\"name\":\"Ten simple rules \u2014 #5 Design for testing - Terra\",\"isPartOf\":{\"@id\":\"https:\/\/terra.bio\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png\",\"datePublished\":\"2022-05-12T19:15:34+00:00\",\"dateModified\":\"2023-12-27T04:55:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#primaryimage\",\"url\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png\",\"contentUrl\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png\",\"width\":1200,\"height\":627,\"caption\":\"pipeline_testing_OG\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/terra.bio\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ten simple rules \u2014 #5 Design for testing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/terra.bio\/#website\",\"url\":\"https:\/\/terra.bio\/\",\"name\":\"Terra\",\"description\":\"Science at Scale\",\"publisher\":{\"@id\":\"https:\/\/terra.bio\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/terra.bio\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/terra.bio\/#organization\",\"name\":\"Terra\",\"url\":\"https:\/\/terra.bio\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/terra.bio\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/Terra-Bio-App@2x.webp\",\"contentUrl\":\"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/Terra-Bio-App@2x.webp\",\"width\":287,\"height\":318,\"caption\":\"Terra\"},\"image\":{\"@id\":\"https:\/\/terra.bio\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/terra.bio\/#\/schema\/person\/ad0522d0b331a5e08fa1733f65086ee2\",\"name\":\"Geraldine Van der Auwera\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/terra.bio\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d73bdaf6740465b385e0e3b290786d8cb9d9d548eadec23364254ba06c85204b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d73bdaf6740465b385e0e3b290786d8cb9d9d548eadec23364254ba06c85204b?s=96&d=mm&r=g\",\"caption\":\"Geraldine Van der Auwera\"},\"sameAs\":[\"https:\/\/app.terra.bio\/\"],\"url\":\"https:\/\/terra.bio\/author\/geraldinevanterra\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ten simple rules \u2014 #5 Design for testing - Terra","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/","og_locale":"en_US","og_type":"article","og_title":"Ten simple rules \u2014 #5 Design for testing - Terra","og_description":"End-to-end testing of tools and pipelines in practice and at scale; inspired by \u201cTen simple rules for large-scale data processing\u201d (Fungtammasan 2022).","og_url":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/","og_site_name":"Terra","article_published_time":"2022-05-12T19:15:34+00:00","article_modified_time":"2023-12-27T04:55:26+00:00","og_image":[{"width":1200,"height":627,"url":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png","type":"image\/png"}],"author":"Geraldine Van der Auwera","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Geraldine Van der Auwera","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#article","isPartOf":{"@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/"},"author":{"name":"Geraldine Van der Auwera","@id":"https:\/\/terra.bio\/#\/schema\/person\/ad0522d0b331a5e08fa1733f65086ee2"},"headline":"Ten simple rules \u2014 #5 Design for testing","datePublished":"2022-05-12T19:15:34+00:00","dateModified":"2023-12-27T04:55:26+00:00","mainEntityOfPage":{"@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/"},"wordCount":1177,"commentCount":0,"publisher":{"@id":"https:\/\/terra.bio\/#organization"},"image":{"@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png","keywords":["ten simple rules"],"articleSection":["Most Recent","Workflows"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/","url":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/","name":"Ten simple rules \u2014 #5 Design for testing - Terra","isPartOf":{"@id":"https:\/\/terra.bio\/#website"},"primaryImageOfPage":{"@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#primaryimage"},"image":{"@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#primaryimage"},"thumbnailUrl":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png","datePublished":"2022-05-12T19:15:34+00:00","dateModified":"2023-12-27T04:55:26+00:00","breadcrumb":{"@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#primaryimage","url":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png","contentUrl":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/pipeline_testing_OG.png","width":1200,"height":627,"caption":"pipeline_testing_OG"},{"@type":"BreadcrumbList","@id":"https:\/\/terra.bio\/ten-simple-rules-5-design-for-testing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/terra.bio\/"},{"@type":"ListItem","position":2,"name":"Ten simple rules \u2014 #5 Design for testing"}]},{"@type":"WebSite","@id":"https:\/\/terra.bio\/#website","url":"https:\/\/terra.bio\/","name":"Terra","description":"Science at Scale","publisher":{"@id":"https:\/\/terra.bio\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/terra.bio\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/terra.bio\/#organization","name":"Terra","url":"https:\/\/terra.bio\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/terra.bio\/#\/schema\/logo\/image\/","url":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/Terra-Bio-App@2x.webp","contentUrl":"https:\/\/terra.bio\/wp-content\/uploads\/2023\/12\/Terra-Bio-App@2x.webp","width":287,"height":318,"caption":"Terra"},"image":{"@id":"https:\/\/terra.bio\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/terra.bio\/#\/schema\/person\/ad0522d0b331a5e08fa1733f65086ee2","name":"Geraldine Van der Auwera","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/terra.bio\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d73bdaf6740465b385e0e3b290786d8cb9d9d548eadec23364254ba06c85204b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d73bdaf6740465b385e0e3b290786d8cb9d9d548eadec23364254ba06c85204b?s=96&d=mm&r=g","caption":"Geraldine Van der Auwera"},"sameAs":["https:\/\/app.terra.bio\/"],"url":"https:\/\/terra.bio\/author\/geraldinevanterra\/"}]}},"_links":{"self":[{"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/posts\/549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/comments?post=549"}],"version-history":[{"count":0,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/posts\/549\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/media\/551"}],"wp:attachment":[{"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/media?parent=549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/categories?post=549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/terra.bio\/wp-json\/wp\/v2\/tags?post=549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}