{"id":11832,"date":"2024-10-21T13:47:42","date_gmt":"2024-10-21T12:47:42","guid":{"rendered":"https:\/\/www.blopig.com\/blog\/?p=11832"},"modified":"2025-10-03T23:05:23","modified_gmt":"2025-10-03T22:05:23","slug":"the-xchem-trove-of-protein-small-molecules-structures-not-in-the-pdb","status":"publish","type":"post","link":"https:\/\/www.blopig.com\/blog\/2024\/10\/the-xchem-trove-of-protein-small-molecules-structures-not-in-the-pdb\/","title":{"rendered":"The XChem trove of protein\u2013small-molecules structures not in the PDB"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/DSC_0008-3.jpg?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"340\" height=\"227\" loading=\"lazy\" src=\"https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/DSC_0008-3.jpg?resize=340%2C227&#038;ssl=1\" alt=\"\" class=\"wp-image-11838\" style=\"width:272px;height:auto\" srcset=\"https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/DSC_0008-3.jpg?w=340&amp;ssl=1 340w, https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/DSC_0008-3.jpg?resize=300%2C200&amp;ssl=1 300w\" sizes=\"auto, (max-width: 340px) 100vw, 340px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>The <a href=\"https:\/\/www.diamond.ac.uk\/Instruments\/Mx\/Fragment-Screening.html\" data-type=\"link\" data-id=\"https:\/\/www.diamond.ac.uk\/Instruments\/Mx\/Fragment-Screening.html\">XChem facility at Diamond Light Source<\/a> is truly impressive feat of automation in fragment-based drug discovery, where visitors comes clutching a styrofoam ice box teeming with apo-form protein crystals, which the shifter soaks with compounds from one or more fragment libraries and a robot at the i04-1 beamline kindly processes each of the thousands of crystal-laden pins, while the visitor enjoys the excellent food in the Diamond canteen (R22).  I would especially recommend the jambalaya. Following data collection, the magic of data processing happens: the <a href=\"https:\/\/www.nature.com\/articles\/ncomms15123\" data-type=\"link\" data-id=\"https:\/\/www.nature.com\/articles\/ncomms15123\">PanDDA method<\/a> is used to find partial occupancy in the density, which is processed semi-automatedly and most open targets are uploaded in the <a href=\"https:\/\/fragalysis.diamond.ac.uk\/\" data-type=\"link\" data-id=\"https:\/\/fragalysis.diamond.ac.uk\/\">Fragalysis web app<\/a> allowing the ligand binding to be studied and further compounds elaborated. This collection of targets bound to hundreds of small molecules is a true treasure trove of data as many have yet to be deposited in the PDB, making it a perfect test set for algorithm design: fragments are notorious fickle to model and deep learning models cannot cheat by remembering these from the protein database.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">API<\/h2>\n\n\n\n<p><strong>This is not a guide to using Fragalysis programmatically, but simply a guide to downloading all the data<\/strong>.<\/p>\n\n\n\n<p>The API root in Fragalysis is <a href=\"https:\/\/fragalysis.diamond.ac.uk\/api\/\">https:\/\/fragalysis.diamond.ac.uk\/api\/<\/a>.<br>Interactions with the Fragalysis database are via Django and thanks to Swagger (now OpenAPI) definitions the endpoints are auto-documented as HTML when viewed in a browser (which does a <code>GET<\/code> request with <code>content-type<\/code> set as <code>application\/xml<\/code> in the <code>header<\/code>). The JSON responses follow the paginated response convention of a dictionary of <code>count<\/code>, <code>next<\/code>, <code>previous<\/code> and <code>results<\/code>, where the latter is a list of entries requested.<\/p>\n\n\n\n<p>There <em>was<\/em> <a href=\"https:\/\/github.com\/xchem\/fragalysis-api\" data-type=\"link\" data-id=\"https:\/\/github.com\/xchem\/fragalysis-api\">a Python SDK to access fragalysis<\/a> that was called Fragalysis-API. It was a tad clunky due to its all-in-one nature \u2014backend and frontend, deposition and retrieval. So I (Matteo) had made <a href=\"https:\/\/github.com\/matteoferla\/fragalysis-api\/blob\/master\/quick_download.md\" data-type=\"link\" data-id=\"https:\/\/github.com\/matteoferla\/fragalysis-api\/blob\/master\/quick_download.md\">a simpler SDK<\/a>, but that may no longer functional in the future as something better will be made at some point. However, the principle is the same. Each target of <code>\/targets<\/code> has an associated <code>\/media<\/code> route (under the value value <strong><code>zip_archive<\/code><\/strong>), with all the files.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import requests\nimport pandas as pd\n    \ndef retrieve_targets(url: str) -&gt; pd.DataFrame:\n    response: requests.Response = requests.get(url)\n    response.raise_for_status() # beware this only raises for non 200 codes,\n    # ... i.e. 404 or 503, whereas permissions errors might not present the typical response status\n    paginated_response: dict = response.json()\n    assert 'error' not in paginated_response, paginated_response\n    return pd.DataFrame(paginated_response['results'])<\/pre>\n\n\n\n<p>There are URLs:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/fragalysis.diamond.ac.uk\/api\/targets\/ \">https:\/\/fragalysis.diamond.ac.uk\/api\/targets\/ <\/a>\u2014 the current production server<\/li>\n\n\n\n<li><a href=\"https:\/\/fragalysis-legacy.xchem.diamond.ac.uk\/api\/targets\/\">https:\/\/fragalysis-legacy.xchem.diamond.ac.uk\/api\/targets\/<\/a> \u2014 the legacy server<\/li>\n\n\n\n<li><a href=\"https:\/\/fragalysis.xchem.diamond.ac.uk\/api\/targets\/\">https:\/\/fragalysis.xchem.diamond.ac.uk\/api\/targets\/<\/a> \u2014 the staging server, which may contain one or more targets relative to the production server.<\/li>\n<\/ul>\n\n\n\n<p>To download the data, the field <strong><code>zip_archive<\/code><\/strong> will provide a URL. Not all will work due to link rot (or archiving) and <code>allow_redirects=True<\/code> in the <code>requests.get<\/code> is advisable.<\/p>\n\n\n\n<p>Privacy can play a role. If you have a DLS FedID you can log-in on the browser, but for API access things are a tad more complicated \u2014requiring a keycloak key and for most cases (e.g. you have one private target) it is way faster to do it manually using a browser by logging in and then changing the URL to the API one.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Target meaning<\/h2>\n\n\n\n<p>Of note is <code>\/targets<\/code>: think of this as as project as this is a whole campaign against a target protein. If a visitor runs a second screening run (\/visit), with some exceptions it would be added to this. If a visitor make a new crystal form or protein variant, it will be added, but if they make a crystal with a new oligomeric state bound to some different protein it will most likely be a new target. Another case is when  a structure or more in a target needs a different privacy, for example the Moonshot data is public, but there may or may not be or more secret MPro projects.<\/p>\n\n\n\n<p>As of version 2.1 of Fragalysis, there is not much metadata on the targets. For the nature of the protein, I wrote a script to infer the biological origin of the targets in 2022 (not maintained as it was for a teaching course that no longer runs). Targets from the CMD (formerly the Oxford SGC), may finish in &#8216;A&#8217;, this is an isoform annotation needed by the internal data manager Scarab. Who the owner of a dataset is can be answered by a web search or asking \u2014these are not disclosed online due to privacy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Metadata file<\/h2>\n\n\n\n<p>The <code>metadata.csv<\/code> file contains a row for every crystal structure that was solved and will have a compound soak ID, like <code>x0001<\/code>. <\/p>\n\n\n\n<p>Fragalysis as of October 2024 is on version 2. As the data processing stack changes with time, different targets from the <a href=\"https:\/\/fragalysis-legacy.xchem.diamond.ac.uk\">older version<\/a> (legacy) have a different formats (pre-alpha, alpha, beta, v1) so the data is inconsistent and some files lack <code>metadata.csv<\/code>. In later formats there is a column containing the PDB accession if present. This is modified by the visitor, who may not update the records.<br>For legacy entries without metadata.csv, I would suggest simply using the method <code>.PerceiveBondOrders()<\/code> of an <code>openbabel.openbabel.OBMol<\/code> instance to assign bond order.  If this sounds like gibberish, see <a href=\"https:\/\/www.blopig.com\/blog\/2024\/09\/out-of-the-box-rdkit-valid-is-an-imperfect-metric-a-review-of-the-kekulizeexception-and-nitrogen-protonation-to-correct-this\/\" data-type=\"link\" data-id=\"https:\/\/www.blopig.com\/blog\/2024\/09\/out-of-the-box-rdkit-valid-is-an-imperfect-metric-a-review-of-the-kekulizeexception-and-nitrogen-protonation-to-correct-this\/\">my previous post on rdkit sanitisation<\/a>.<br>The compound of interest is universally the residue <code>LIG<\/code>.<\/p>\n\n\n\n<p>NB. The SMILES of covalents are in warhead form, not reacted form, and the SMILES of charged compounds are occasionally salted as sold.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Crystal alignments<\/h2>\n\n\n\n<p>As mentioned, each soak gets a code, generally starting with an x followed by sequential digits. The XChem codes for two different targets do not match (to avoid privacy leaks). However, there often is a need to align the crystal structures, as there may be multiple peptide chains in the crystal cell, in the downloaded files in many targets (current by default) are  found with a letter or digit+letter representing the alignment to the reference. Do note, that in older legacy targets, there is no <code>reference.pdb<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fragment-hit details<\/h2>\n\n\n\n<p>Four details should be noted:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>multiple ligands,<\/li>\n\n\n\n<li>ligand \u2260 hit,<\/li>\n\n\n\n<li>chemical isomorphism, and<\/li>\n\n\n\n<li>chirality<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Multiple instances<\/h3>\n\n\n\n<p>A crystal may have the compound bound more than once (new index) either in the same chain or in the different chains (chain id of ligand is closest protein) or the binding might be ambiguous (altloc). <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ligand \u2260 hit<\/h3>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-large is-resized\"><a href=\"https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?ssl=1\"><img data-recalc-dims=\"1\" decoding=\"async\" width=\"625\" height=\"446\" loading=\"lazy\" src=\"https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?resize=625%2C446&#038;ssl=1\" alt=\"\" class=\"wp-image-11839\" style=\"width:223px;height:auto\" srcset=\"https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?resize=1024%2C731&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?resize=300%2C214&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?resize=768%2C548&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?resize=1536%2C1096&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?resize=2048%2C1462&amp;ssl=1 2048w, https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?resize=624%2C445&amp;ssl=1 624w, https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?w=1250&amp;ssl=1 1250w, https:\/\/i0.wp.com\/www.blopig.com\/blog\/wp-content\/uploads\/2024\/10\/names.png?w=1875&amp;ssl=1 1875w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><\/figure>\n<\/div>\n\n\n<p>The terminology can get complex and no two users can agree, but briefly. A bound compound in a structure is a <strong>ligand<\/strong>, but is not necessarily a hit.<br>A <strong>hit<\/strong> <em>sensu stricto<\/em> is a compound that has a kinetic effect on the activity of the protein and can be classed as <strong>inhibitor<\/strong> (enzymatic) \/ <strong>antagonist<\/strong> (PPI) or <strong>activator<\/strong> \/ <strong>agonist<\/strong>, and this modulation can be <strong>orthosteric<\/strong> (or &#8220;normal&#8221; in casual speak) or <strong>allosteric<\/strong>. A fragment that binds in the desired place is referred to as <strong>fragment-hit<\/strong> (red in figure). Not all fragment-hits will have a <em>detectable<\/em> kinetic effect. This totally depends on the assay. If the product or substrate or partner is hard to detect over noise there will be less sensitivity for weak modulators. if enzymatic and the turnover is fast things are problematic:  too little substrate may lead to substrate depletion, which is a deviates from the assumption of a steady-state regime for Michaelis-Menten kinetics, while, based on the Cheng-Prusoff equation, if the substrate concentration is far higher than the Michaelis constant, one gets very small and noisy IC50 values. The converse is also true. Some assays are less sensitive to certain compounds. In crystallographic screens, somer entropic binders are harder to detect as the slip and slide around and can be confused with bulk solvent (I call them <strong>sliders<\/strong>, grey in figure).<\/p>\n\n\n\n<p>A ligand might bind in the crystal interface and is called an <strong>crystallographic artefact<\/strong> (lime in figure). Flat arenes can stack with themselves causing issues in assays (blue in figure); these are normally called <strong>chemical artefacts<\/strong>, <strong>swill<\/strong> or <strong>PAINS compounds<\/strong>.<\/p>\n\n\n\n<p>Ligands bind in thermodynamic favourable places (sinks), but active sites as crystallised are not always great thermodynamic places nor are all sinks active sites. A protein might be modulate by another protein or be scaffolded somewhere and so forth, if that site is not important in the drug discovery campaign, in XChem it gets informally referred to as a <strong>miss<\/strong> (green in figure).<\/p>\n\n\n\n<p>For all compounds soaked the data is not available publicly as it is in a soak file (SQLite). This is because the status of a soak can be complicated  <em>ie.<\/em> the negatives are not all compounds that do not bind (true negative, white in figure) as there are multiple possible ways to have a false negative:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>user failures, <em>e.g. <\/em>I saw an entry &#8216;puck dropped&#8217;&#8230;<\/li>\n\n\n\n<li>assay failure, <em>e.g. <\/em>the compound sticks to the plastic walls, the shifter missed, the compound precipitates in DMSO (termed <strong>brick dust<\/strong>), or the compound cannot diffuse in by soaking but would work if co-crystalised, or is a sliding compound (see above).<\/li>\n\n\n\n<li>crystal cracking failure: the compound binds but the conformational shift cracks the crystal. This is the case when the crystal is in an apo form, while the substrate bound form is profoundly different.<\/li>\n<\/ul>\n\n\n\n<p>To make definitions worse, in some places I call fragments that bind multiple targets <strong>sluggers<\/strong> (top hitter in baseball), and compounds that never bind, <strong>ligaints<\/strong> (ain&#8217;t a ligand). This is because some fragment are very promiscuous (such as the substituted N-aryl,aryl-amides), while others are never seen (such as the more hydrophobic compounds in the screening deck). The distribution is not gaussian, but rather bimodal, but that is a story for another time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Chemical isomorphism<\/h3>\n\n\n\n<p>The diffraction of C, N and O cannot be distinguished. As a result the orientation of certain groups with this ambiguity may be incorrectly assigned. With big compounds, this is not too bad, but can be fatal for a fragment.<br>I personally run <a href=\"https:\/\/gist.github.com\/matteoferla\/49ebe1ef747162dc2e8d39f1f047f5e3\" data-type=\"link\" data-id=\"https:\/\/gist.github.com\/matteoferla\/49ebe1ef747162dc2e8d39f1f047f5e3\">a script to enumerate these<\/a> and score them or run MD as they are most often wrong.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Chirality<\/h3>\n\n\n\n<p>The compounds are frequently racemic, but sometimes only one enantiomer binds. In some studies with non-structural assays (<a href=\"https:\/\/www.nature.com\/articles\/s41557-024-01601-1\" data-type=\"link\" data-id=\"https:\/\/www.nature.com\/articles\/s41557-024-01601-1\">example<\/a>), these (&#8220;stereoprobes&#8221;) are used in signal enrichment. In XChem, the racemic nature keeps costs down. The SMILES will be racemic in the metadata even if only one enantiomer was seen. However, this does not mean they are <em>not<\/em> enantioenriched. A nice example of this is PDB:5SPD, where an racemic elaboration binds Mac1, but the isomer with best affinity (<a href=\"https:\/\/www.pnas.org\/doi\/full\/10.1073\/pnas.2212931120\" data-type=\"link\" data-id=\"https:\/\/www.pnas.org\/doi\/full\/10.1073\/pnas.2212931120\">0.5 \u00b5M<\/a>) has worst occupancy. In fact, when Stefan was refining the structure he solved first the unexpected enantiomer and shared it, which caused some panic.<br>This leads to another caveat: not all crystallographers may have considered all enantiomers and instead stick with only one solution.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Not in the PDB<\/h2>\n\n\n\n<p>There are three reason why a structure may be in Fragalysis but in the PDB.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Work is ongoing and not paper-ready,<\/li>\n\n\n\n<li>the project got cancelled\/shelved as the researcher left, or<\/li>\n\n\n\n<li>Some structures were deposited but not all for a target, because PDB deposition is rather painful, so only fragment-hits of interest were deposited, while the others where not refined well enough.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Footnote: docking<\/h2>\n\n\n\n<p>Lastly, if using <em>these<\/em> (cryo-diffracted\u2013crystal\u2014bound) fragments for re-docking, I would <em>personally <\/em>suggest lowering the strength of entropic terms (hydrophobic interactions). This is from personal experience and I have only tried it in Gold where 1\/3 gave <em>marginally<\/em> better AUC. Generally, however, the entropic contribution required MD trajectories with explicit solvent to be modelled slightly correctly. The emphasised words in italics are because the results are close to random noise for predicting <em>a priori<\/em> what may have detectable binding out of the whole screening library\/deck, the conformation for a redocked fragment-hit is about 20\u201340% within 2\u00c5 depending on the target\/receptor.<br>The reasons for this are addressed in a <a href=\"https:\/\/www.blopig.com\/blog\/2023\/11\/demystifying-the-thermodynamics-of-ligand-binding\/\" data-type=\"link\" data-id=\"https:\/\/www.blopig.com\/blog\/2023\/11\/demystifying-the-thermodynamics-of-ligand-binding\/\">previous post about demystifying the thermodynamics of ligand binding<\/a>, but briefly, a ligand will bind rigidly thanks to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Enthalpy\" data-type=\"link\" data-id=\"https:\/\/en.wikipedia.org\/wiki\/Enthalpy\">enthalpic interactions<\/a>, which may come at an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Entropy\" data-type=\"link\" data-id=\"https:\/\/en.wikipedia.org\/wiki\/Entropy\">entropic cost<\/a> of rigidification (but lower B-factors and better chance of detection) and also will change the solvent interactions, by displacing weakly binding waters (increasing entropy, cf. <a href=\"https:\/\/en.wikipedia.org\/wiki\/Chelation\" data-type=\"link\" data-id=\"https:\/\/en.wikipedia.org\/wiki\/Chelation\">chelate effect<\/a>) and shielding waters from the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Hydrophobic_effect\" data-type=\"link\" data-id=\"https:\/\/en.wikipedia.org\/wiki\/Hydrophobic_effect\">hydrophobic effect<\/a>. In the case of fragments (&lt;250 Da), fewer water molecules are displaces than drug-like compounds (&lt;500 Da), so an implicit solvent model will be more susceptible to deviations. Not to mention, a smaller compound will be more susceptible to bounce a bit due to collisions with water molecules at RT. As mentioned, a dynamic ligand is harder to discern from the bulk solvent as the crystal represents an average across different macromolecules. The crystals are flash-frozen in liquid nitrogen making the water network vitrify and not crystallise into an ice-cube: the whole crystal will reach 70K in a few microseconds, while individual macromolecules will be in 10\u2013100 nanoseconds, which does give some time for the ligands to lock into low-energy conformation, but not really enough find the enthalpic minimum, so when there is a larger ensemble of conformations, the atoms will be more blurry (the B in B-factors) and harder to detect. However, this leads to the rabbit hole of false negative that show an inhibitory activity but no detected density when soaked: my advice is to keep away from these!<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>The XChem facility at Diamond Light Source is truly impressive feat of automation in fragment-based drug discovery, where visitors comes clutching a styrofoam ice box teeming with apo-form protein crystals, which the shifter soaks with compounds from one or more fragment libraries and a robot at the i04-1 beamline kindly processes each of the thousands [&hellip;]<\/p>\n","protected":false},"author":102,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","wikipediapreview_detectlinks":true,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[187,14],"tags":[134],"ppma_author":[701],"class_list":["post-11832","post","type-post","status-publish","format-standard","hentry","category-cheminformatics","category-howto","tag-small-molecules"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"authors":[{"term_id":701,"user_id":102,"is_guest":0,"slug":"nuben","display_name":"Matteo Ferla","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/2185fc527a4ace0863c903d27646996994413c31d80e8e4c175477b836e7715c?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/posts\/11832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/users\/102"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/comments?post=11832"}],"version-history":[{"count":5,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/posts\/11832\/revisions"}],"predecessor-version":[{"id":11855,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/posts\/11832\/revisions\/11855"}],"wp:attachment":[{"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/media?parent=11832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/categories?post=11832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/tags?post=11832"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.blopig.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=11832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}