{"id":702,"date":"2025-08-08T21:16:16","date_gmt":"2025-08-08T21:16:16","guid":{"rendered":"https:\/\/proteus-analytics.com\/?page_id=702"},"modified":"2025-08-26T00:16:39","modified_gmt":"2025-08-26T00:16:39","slug":"publications","status":"publish","type":"page","link":"https:\/\/proteus-analytics.com\/index.php\/publications\/","title":{"rendered":"Publications"},"content":{"rendered":"<p><!-- =====================\n Proteus Analytics \u2014 Publications Page (Cards + Pic Options)\n Single-file drop-in block for WordPress (Custom HTML block) or any site\n Version: pa-pubs v1.0 \u2014 2025-08-25\n Features: search \u2022 filter \u2022 sort \u2022 optional thumbnails \u2022 DOI\/PDF\/Code \u2022 BibTeX copy\n Fonts: EB Garamond titles\n Notes: Replace sample \n\n<article> items with your publications\n ====================== --><\/p>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=EB+Garamond:wght@600;700&display=swap\" rel=\"stylesheet\">\n<style>\n  \/* ---------- Design tokens ---------- *\/\n  .pa-pubs { \n    --bg:#ffffff; --text:#0f172a; --muted:#475569; --chip:#eef2ff; --chip-text:#3730a3;\n    --card:#ffffff; --bord:#e2e8f0; --shadow:0 6px 24px rgba(2,6,23,.08);\n    --accent:#0ea5e9; --accent-2:#14b8a6; --warn:#f59e0b; --radius:16px; --gap:18px; --pad:18px;\n    --display:'EB Garamond', ui-serif, Georgia, \"Times New Roman\", serif; --sans:ui-sans-serif, system-ui,-apple-system, Segoe UI, Roboto, Helvetica, Arial, \"Apple Color Emoji\",\"Segoe UI Emoji\";\n    --ring: 0 0 0 3px rgba(14,165,233,.25);\n  }\n  @media (prefers-color-scheme: dark){\n    .pa-pubs { --bg:#0b1220; --text:#e5e7eb; --muted:#9aa4b2; --chip:#1e293b; --chip-text:#c7d2fe; --card:#0f172a; --bord:#1f2937; --shadow: 0 8px 28px rgba(0,0,0,.35); }\n  }<\/p>\n<p>  \/* ---------- Layout ---------- *\/\n  .pa-pubs { background:var(--bg); color:var(--text); font-family:var(--sans); line-height:1.55;}\n  .pa-pubs .wrap { max-width:1200px; margin:auto; padding:clamp(12px, 2.5vw, 28px); }\n  .pa-pubs h1, .pa-pubs h2 { font-family:var(--display); letter-spacing:.2px; margin:0 0 .3em; }\n  .pa-pubs h1 { font-size: clamp(28px, 4.2vw, 44px); }\n  .pa-pubs h2 { font-size: clamp(20px, 2.6vw, 28px); }\n  .pa-pubs p { margin: .3em 0 .8em; color:var(--muted); }<\/p>\n<p>  \/* ---------- Toolbar ---------- *\/\n  .pa-toolbar { display:grid; grid-template-columns: 1fr; gap: var(--gap); margin: 18px 0 8px; }\n  .pa-toolbar .row { display:flex; gap: var(--gap); flex-wrap: wrap; align-items:center; }\n  .pa-toolbar input[type=\"search\"], .pa-toolbar select, .pa-toolbar .toggle {\n    background:var(--card); color:var(--text); border:1px solid var(--bord); border-radius:12px; padding:10px 12px; box-shadow:var(--shadow);\n  }\n  .pa-toolbar input[type=\"search\"]{ flex:1 1 280px; min-width: 220px;}\n  .pa-toolbar select{ flex:0 0 180px; }\n  .pa-toolbar label.toggle { display:inline-flex; align-items:center; gap:8px; cursor:pointer; user-select:none; }\n  .pa-toolbar input[type=\"checkbox\"]{ transform: translateY(1px); }<\/p>\n<p>  \/* ---------- Grid ---------- *\/\n  .pa-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--gap); margin-top: 12px; }<\/p>\n<p>  \/* ---------- Card ---------- *\/\n  .pa-card { position:relative; background:var(--card); border:1px solid var(--bord); border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; transition: transform .2s ease, box-shadow .2s ease; }\n  .pa-card:focus-within { outline:none; box-shadow: var(--shadow), var(--ring); }\n  .pa-card:hover { transform: translateY(-2px); }<\/p>\n<p>  .pa-thumb { aspect-ratio: 16 \/ 9; background:linear-gradient(180deg, rgba(2,6,23,.05), rgba(2,6,23,.12)); overflow:hidden; }\n  .pa-thumb img { width:100%; height:100%; object-fit:cover; display:block; }\n  .pa-thumb[hidden]{ display:none !important; }<\/p>\n<p>  .pa-body { padding: var(--pad); }\n  .pa-title { font-family:var(--display); font-weight:700; font-size: 1.05rem; line-height:1.35; margin: 0 0 .45rem; hyphens:auto; }\n  .pa-meta { font-size:.92rem; color:var(--muted); margin-bottom:.65rem; }\n  .pa-venue { font-style: italic; }<\/p>\n<p>  \/* ---------- Chips & actions ---------- *\/\n  .pa-chips { display:flex; gap:8px; flex-wrap:wrap; margin:.6rem 0 .8rem; }\n  .pa-chip { font-size:.78rem; padding:4px 8px; border-radius:999px; background:var(--chip); color:var(--chip-text); border:1px solid var(--bord); }<\/p>\n<p>  .pa-actions { display:flex; gap:10px; flex-wrap:wrap; }\n  .pa-btn { display:inline-flex; align-items:center; gap:8px; padding:9px 12px; border-radius:12px; border:1px solid var(--bord); text-decoration:none; color:var(--text); background: var(--card); box-shadow:var(--shadow); font-size:.9rem; }\n  .pa-btn:hover { transform: translateY(-1px); }\n  .pa-btn:active { transform: translateY(0); }\n  .pa-btn[data-kind=\"doi\"]::before { content:\"\ud83d\udd17\"; }\n  .pa-btn[data-kind=\"pdf\"]::before { content:\"\ud83d\udcc4\"; }\n  .pa-btn[data-kind=\"code\"]::before { content:\"\ud83d\udcbb\"; }\n  .pa-btn[data-kind=\"bib\"]::before { content:\"\ud83d\udcd1\"; }<\/p>\n<p>  \/* ---------- Visually hidden for accessibility ---------- *\/\n  .sr-only{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }<\/p>\n<p>  \/* ---------- Utility ---------- *\/\n  .pa-muted { color:var(--muted); }\n<\/style>\n<section class=\"pa-pubs\">\n<div class=\"wrap\">\n<h1>Publications<\/h1>\n<p class=\"pa-muted\">Search, filter, and sort. Toggle thumbnails if you prefer a compact list. Replace the sample items below with your own.<\/p>\n<p>    <!-- ===== Toolbar ===== --><\/p>\n<div class=\"pa-toolbar\">\n<div class=\"row\">\n        <input id=\"paSearch\" type=\"search\" placeholder=\"Search by title, author, venue, tag\u2026\" aria-label=\"Search publications\"><br \/>\n        <select id=\"paFilter\" aria-label=\"Filter by type\"><option value=\"all\">All types<\/option><option value=\"journal\">Journal<\/option><option value=\"conference\">Conference<\/option><option value=\"preprint\">Preprint<\/option><option value=\"thesis\">Thesis<\/option><\/select><br \/>\n        <select id=\"paSort\" aria-label=\"Sort publications\"><option value=\"year-desc\">Year \u2193<\/option><option value=\"year-asc\">Year \u2191<\/option><option value=\"title-asc\">Title A\u2192Z<\/option><option value=\"title-desc\">Title Z\u2192A<\/option><\/select><br \/>\n        <label class=\"toggle\"><input id=\"paThumbsToggle\" type=\"checkbox\" checked> Show thumbnails<\/label>\n      <\/div>\n<\/p><\/div>\n<p>    <!-- ===== Grid ===== --><\/p>\n<div id=\"paGrid\" class=\"pa-grid\">\n<p>      <!-- ===== Sample card 1 ===== --><\/p>\n<article class=\"pa-card\" data-type=\"journal\" data-year=\"2023\" data-tags=\"dopamine,cvode,neuroscience\">\n<div class=\"pa-thumb\"><img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1520975693416-682f61dc0e43?q=80&w=1200&auto=format&fit=crop\" alt=\"Illustrative neuron network\"><\/div>\n<div class=\"pa-body\">\n<h3 class=\"pa-title\">Parameter-Swept Models of Dopamine Neuron Firing with Poisson Afferents<\/h3>\n<div class=\"pa-meta\"><span class=\"pa-authors\">R. S. Landry Jr., C. Canavier, I. Komendantov<\/span> \u2022 <span class=\"pa-venue\">Journal of Computational Neuroscience<\/span> \u2022 <span class=\"pa-year\">2023<\/span><\/div>\n<div class=\"pa-chips\">\n            <span class=\"pa-chip\">dopamine<\/span><br \/>\n            <span class=\"pa-chip\">CVODE<\/span><br \/>\n            <span class=\"pa-chip\">Poisson inputs<\/span>\n          <\/div>\n<div class=\"pa-actions\">\n            <a class=\"pa-btn\" data-kind=\"doi\" href=\"#\" target=\"_blank\" rel=\"noopener\">DOI<\/a><br \/>\n            <a class=\"pa-btn\" data-kind=\"pdf\" href=\"#\" target=\"_blank\" rel=\"noopener\">PDF<\/a><br \/>\n            <a class=\"pa-btn\" data-kind=\"code\" href=\"#\" target=\"_blank\" rel=\"noopener\">Code<\/a><br \/>\n            <button class=\"pa-btn\" data-kind=\"bib\" data-bibtex=\"@article{Landry2023, title={Parameter-Swept Models of Dopamine Neuron Firing with Poisson Afferents}, author={Landry, Richard S. and Canavier, Carmen and Komendantov, Ivan}, journal={J. Comput. Neurosci.}, year={2023}}\">Copy BibTeX<\/button>\n          <\/div>\n<\/p><\/div>\n<\/article>\n<p>      <!-- ===== Sample card 2 ===== --><\/p>\n<article class=\"pa-card\" data-type=\"preprint\" data-year=\"2024\" data-tags=\"reaction-diffusion,gray-scott,pde\">\n<div class=\"pa-thumb\"><img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1518779578993-ec3579fee39f?q=80&w=1200&auto=format&fit=crop\" alt=\"Reaction-diffusion pattern\"><\/div>\n<div class=\"pa-body\">\n<h3 class=\"pa-title\">Gray\u2013Scott Dynamics for Tissue Growth and Apoptosis<\/h3>\n<div class=\"pa-meta\"><span class=\"pa-authors\">R. S. Landry Jr.<\/span> \u2022 <span class=\"pa-venue\">arXiv preprint<\/span> \u2022 <span class=\"pa-year\">2024<\/span><\/div>\n<div class=\"pa-chips\">\n            <span class=\"pa-chip\">reaction\u2013diffusion<\/span><br \/>\n            <span class=\"pa-chip\">biomedical<\/span>\n          <\/div>\n<div class=\"pa-actions\">\n            <a class=\"pa-btn\" data-kind=\"doi\" href=\"#\" target=\"_blank\" rel=\"noopener\">arXiv<\/a><br \/>\n            <a class=\"pa-btn\" data-kind=\"pdf\" href=\"#\" target=\"_blank\" rel=\"noopener\">PDF<\/a><br \/>\n            <button class=\"pa-btn\" data-kind=\"bib\" data-bibtex=\"@misc{Landry2024, title={Gray\u2013Scott Dynamics for Tissue Growth and Apoptosis}, author={Landry, Richard S.}, eprint={XXXX.XXXXX}, archivePrefix={arXiv}, year={2024}}\">Copy BibTeX<\/button>\n          <\/div>\n<\/p><\/div>\n<\/article>\n<p>      <!-- ===== Sample card 3 (no image) ===== --><\/p>\n<article class=\"pa-card\" data-type=\"conference\" data-year=\"2022\" data-tags=\"cvode,robertson,stiff-odes\">\n<div class=\"pa-thumb\" hidden><\/div>\n<div class=\"pa-body\">\n<h3 class=\"pa-title\">Leveraging CVODE on the Robertson Problem: A Practical Guide<\/h3>\n<div class=\"pa-meta\"><span class=\"pa-authors\">R. S. Landry Jr.<\/span> \u2022 <span class=\"pa-venue\">SIAM CSE Workshop<\/span> \u2022 <span class=\"pa-year\">2022<\/span><\/div>\n<div class=\"pa-chips\">\n            <span class=\"pa-chip\">stiff ODEs<\/span><br \/>\n            <span class=\"pa-chip\">SUNDIALS<\/span>\n          <\/div>\n<div class=\"pa-actions\">\n            <a class=\"pa-btn\" data-kind=\"pdf\" href=\"#\" target=\"_blank\" rel=\"noopener\">Slides (PDF)<\/a><br \/>\n            <a class=\"pa-btn\" data-kind=\"code\" href=\"#\" target=\"_blank\" rel=\"noopener\">Repository<\/a><br \/>\n            <button class=\"pa-btn\" data-kind=\"bib\" data-bibtex=\"@inproceedings{Landry2022, title={Leveraging CVODE on the Robertson Problem: A Practical Guide}, author={Landry, Richard S.}, booktitle={SIAM CSE}, year={2022}}\">Copy BibTeX<\/button>\n          <\/div>\n<\/p><\/div>\n<\/article>\n<p>      <!-- ===== Sample card 4 (thesis) ===== --><\/p>\n<article class=\"pa-card\" data-type=\"thesis\" data-year=\"2012\" data-tags=\"biofilms,pde,bessel\">\n<div class=\"pa-thumb\"><img decoding=\"async\" src=\"https:\/\/images.unsplash.com\/photo-1559757175-08c65501a44f?q=80&w=1200&auto=format&fit=crop\" alt=\"Biofilm micrograph stylized\"><\/div>\n<div class=\"pa-body\">\n<h3 class=\"pa-title\">Mathematical Models of Biofilm Growth on Catheters<\/h3>\n<div class=\"pa-meta\"><span class=\"pa-authors\">R. S. Landry Jr.<\/span> \u2022 <span class=\"pa-venue\">Ph.D. Dissertation<\/span> \u2022 <span class=\"pa-year\">2012<\/span><\/div>\n<div class=\"pa-chips\">\n            <span class=\"pa-chip\">Bessel functions<\/span><br \/>\n            <span class=\"pa-chip\">boundary layers<\/span>\n          <\/div>\n<div class=\"pa-actions\">\n            <a class=\"pa-btn\" data-kind=\"pdf\" href=\"#\" target=\"_blank\" rel=\"noopener\">PDF<\/a><br \/>\n            <button class=\"pa-btn\" data-kind=\"bib\" data-bibtex=\"@phdthesis{Landry2012, title={Mathematical Models of Biofilm Growth on Catheters}, author={Landry, Richard S.}, school={LSU}, year={2012}}\">Copy BibTeX<\/button>\n          <\/div>\n<\/p><\/div>\n<\/article><\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\n(function(){\n  const grid = document.getElementById('paGrid');\n  const search = document.getElementById('paSearch');\n  const filter = document.getElementById('paFilter');\n  const sortSel = document.getElementById('paSort');\n  const thumbsToggle = document.getElementById('paThumbsToggle');<\/p>\n<p>  const cards = Array.from(grid.querySelectorAll('.pa-card'));<\/p>\n<p>  function getCardText(card){\n    return (\n      card.querySelector('.pa-title')?.textContent + ' ' +\n      card.querySelector('.pa-authors')?.textContent + ' ' +\n      card.querySelector('.pa-venue')?.textContent + ' ' +\n      (card.dataset.tags||'')\n    ).toLowerCase();\n  }<\/p>\n<p>  function applyFilter(){\n    const q = (search.value||'').toLowerCase();\n    const type = filter.value;<\/p>\n<p>    cards.forEach(card => {\n      const matchesType = (type === 'all') || (card.dataset.type === type);\n      const matchesText = getCardText(card).includes(q);\n      card.style.display = (matchesType && matchesText) ? '' : 'none';\n    });\n  }<\/p>\n<p>  function applySort(){\n    const mode = sortSel.value;\n    const visible = cards.filter(c => c.style.display !== 'none');\n    const cmp = {\n      'year-desc': (a,b)=> (+b.dataset.year) - (+a.dataset.year),\n      'year-asc':  (a,b)=> (+a.dataset.year) - (+b.dataset.year),\n      'title-asc': (a,b)=> a.querySelector('.pa-title').textContent.localeCompare(b.querySelector('.pa-title').textContent),\n      'title-desc':(a,b)=> b.querySelector('.pa-title').textContent.localeCompare(a.querySelector('.pa-title').textContent)\n    }[mode] || (()=>0);<\/p>\n<p>    visible.sort(cmp).forEach(card => grid.appendChild(card));\n  }<\/p>\n<p>  function toggleThumbs(){\n    const show = thumbsToggle.checked;\n    grid.querySelectorAll('.pa-thumb').forEach(th => {\n      if(show){ th.removeAttribute('hidden'); }\n      else { th.setAttribute('hidden',''); }\n    });\n  }<\/p>\n<p>  function enableBibCopy(){\n    grid.addEventListener('click', (e)=>{\n      const btn = e.target.closest('.pa-btn[data-kind=\"bib\"]');\n      if(!btn) return;\n      const bib = btn.getAttribute('data-bibtex')||'';\n      navigator.clipboard?.writeText(bib).then(()=>{\n        const txt = btn.textContent;\n        btn.textContent = 'Copied!';\n        setTimeout(()=> btn.textContent = txt, 900);\n      });\n    });\n  }<\/p>\n<p>  search.addEventListener('input', ()=>{ applyFilter(); applySort(); });\n  filter.addEventListener('change', ()=>{ applyFilter(); applySort(); });\n  sortSel.addEventListener('change', ()=> applySort());\n  thumbsToggle.addEventListener('change', toggleThumbs);<\/p>\n<p>  \/\/ init\n  applyFilter();\n  applySort();\n  toggleThumbs();\n  enableBibCopy();\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Publications Search, filter, and sort. Toggle thumbnails if you prefer a compact list. Replace the sample items below with your own. All<\/p>\n<p class=\"link-more\"><a class=\"myButt \" href=\"https:\/\/proteus-analytics.com\/index.php\/publications\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","footnotes":""},"class_list":["post-702","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/proteus-analytics.com\/index.php\/wp-json\/wp\/v2\/pages\/702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/proteus-analytics.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/proteus-analytics.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/proteus-analytics.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/proteus-analytics.com\/index.php\/wp-json\/wp\/v2\/comments?post=702"}],"version-history":[{"count":14,"href":"https:\/\/proteus-analytics.com\/index.php\/wp-json\/wp\/v2\/pages\/702\/revisions"}],"predecessor-version":[{"id":1008,"href":"https:\/\/proteus-analytics.com\/index.php\/wp-json\/wp\/v2\/pages\/702\/revisions\/1008"}],"wp:attachment":[{"href":"https:\/\/proteus-analytics.com\/index.php\/wp-json\/wp\/v2\/media?parent=702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}