update
This commit is contained in:
parent
e54b8193db
commit
e6ec80ebe6
|
@ -1,38 +0,0 @@
|
|||
title: Academic Letter Template
|
||||
authors:
|
||||
- name: Ming Su
|
||||
affiliation: drwater
|
||||
version: 0.1.0
|
||||
quarto-required: ">=1.3.0"
|
||||
resources:
|
||||
- dwcl.tex
|
||||
contributes:
|
||||
affliction: Key Laboratory of Environmental Aquatic Chemistry, State Key Laboratory of Regional Environment and Sustainability, Research Center for Eco-Environmental Sciences, Chinese Academy of Sciences
|
||||
from_email: "mingsu@rcees.ac.cn"
|
||||
from_phone: "+86 (10) 62843038"
|
||||
from_institution_logo: "inst/rceeslonglogo.png"
|
||||
from_sign: "inst/signms.png"
|
||||
from_position: "Professor"
|
||||
from_professional_title: "Ph.D."
|
||||
from_institution: "Chinese Academy of Sciences"
|
||||
from_department: "Research Center for Eco-Environmental Sciences"
|
||||
from_address: "P.O. Box 2871, Beijing"
|
||||
to_professional_title: ""
|
||||
to_name: "Editor-in-Chief"
|
||||
opening_greeting: "Dear Editor,"
|
||||
closing_greeting: "Yours Sincerely,"
|
||||
formats:
|
||||
html:
|
||||
css: style.css
|
||||
pdf:
|
||||
template: dwcl.tex
|
||||
documentclass: letter
|
||||
papersize: letter
|
||||
latex_engine: xelatex
|
||||
keep-tex: false
|
||||
keep-md: false
|
||||
geometry:
|
||||
- margin=1in
|
||||
toc: false
|
||||
number-sections: false
|
||||
lang: en
|
|
@ -1,240 +0,0 @@
|
|||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Academic Letter LaTeX and RMarkdown Structure %
|
||||
% Author: Pedro Henrique Pereira Braga %
|
||||
% %
|
||||
% License: %
|
||||
% CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/) %
|
||||
% %
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
% Set the font size (11pt, for now) and paper size (e.g. letterpaper, a4paper)
|
||||
\documentclass[11pt, letterpaper]{letter}
|
||||
|
||||
%----------------------------------------------------------------------
|
||||
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
|
||||
%----------------------------------------------------------------------
|
||||
|
||||
\usepackage{graphicx} % Required for including pictures
|
||||
\usepackage{fancyhdr} % Allows the use of fancy headers and footers
|
||||
|
||||
\usepackage{microtype} % For typography improvement
|
||||
|
||||
\usepackage{url} % Allows the use of hyperlinks
|
||||
\urlstyle{same} % Allows hyperlink fonts to be the same as the mainfont
|
||||
\usepackage[hidelinks]{hyperref} % Allows the use of hyperlinks and
|
||||
% removes the blue boxes around the link
|
||||
|
||||
\pagestyle{empty} % Removes headers and footers
|
||||
|
||||
\usepackage{setspace} % Allows the use of double spacing in the letter body
|
||||
|
||||
\setlength\parindent{1cm} % Paragraph indentation
|
||||
|
||||
% Create a new command for the horizontal rule in the document which allows
|
||||
% thickness specification
|
||||
\makeatletter
|
||||
\def\@texttop{} % force the address to start above
|
||||
\renewcommand*{\opening}[1]{\ifx\@empty\fromaddress
|
||||
\thispagestyle{firstpage}%
|
||||
{\raggedleft\@date\par}%
|
||||
\else % home address
|
||||
\thispagestyle{empty}%
|
||||
{\raggedleft\begin{tabular}{l@{}}\ignorespaces
|
||||
\fromaddress \\*[2\parskip]%
|
||||
\@date \end{tabular}\par}%
|
||||
\fi
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
%{\raggedright \toname \\ \toaddress \par}% <-- Removed
|
||||
%\vspace{2\parskip}% <-- Removed
|
||||
#1\par\nobreak}
|
||||
\let\ps@empty\ps@plain
|
||||
\let\ps@firstpage\ps@plain
|
||||
\makeatother
|
||||
|
||||
%--------------------------------------------------------------------------
|
||||
% FONTS
|
||||
%--------------------------------------------------------------------------
|
||||
|
||||
\usepackage[T1]{fontenc} % Output font encoding for international characters
|
||||
% \usepackage[utf8]{inputenc} % Required for inputting international characters
|
||||
\usepackage[quiet]{fontspec} % Allows the use of fontspec
|
||||
\setmainfont{Calibri}
|
||||
% \usepackage{txfonts} % Allows the use of Lato fonts
|
||||
|
||||
|
||||
%----------------------------------------------------------------------------
|
||||
% DOCUMENT MARGINS
|
||||
%----------------------------------------------------------------------------
|
||||
|
||||
\usepackage{geometry} % Required for adjusting page dimensions
|
||||
|
||||
\geometry{
|
||||
headheight = 0.7in, % Header height
|
||||
top=1.5in, % Top margin
|
||||
bottom=1.5cm, % Bottom margin
|
||||
left=3cm, % Left margin
|
||||
right=3cm, % Right margin
|
||||
% showframe, % Uncomment to show how the type block is set on the page
|
||||
}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% AUTHOR AND RECIPIENTS NEW COMMANDS AND DETAILS STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\newcommand{\authordetails}[1]{\renewcommand{\authordetails}{#1}}
|
||||
\newcommand{\recipientdetails}[1]{\renewcommand{\recipientdetails}{#1}}
|
||||
|
||||
%-----------------------------------------------------------------------------
|
||||
% HEADER STRUCTURE
|
||||
%-----------------------------------------------------------------------------
|
||||
|
||||
\address{
|
||||
% Include the author's details on the right side of the page under the line
|
||||
\raggedleft{
|
||||
\footnotesize{ % Use a smaller font size
|
||||
$author$\\ % Author name
|
||||
\authordetails\\
|
||||
\hspace{1mm}
|
||||
}
|
||||
}
|
||||
\vspace{-0.05\textheight} % Move the date and letter content up
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% COMPOSE THE ENTIRE HEADER
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\renewcommand{\opening}[1]{
|
||||
{\fromaddress
|
||||
\vspace{0.05\textheight}\\ % Print the sender's address here and add some whitespace to allow the printing of the date
|
||||
\raggedleft{$date$} % Include the date, aligned to the right
|
||||
\par % par
|
||||
}
|
||||
{\raggedright
|
||||
\toname\\
|
||||
\toaddress
|
||||
\par} % Print the recipient's name and adress
|
||||
\vspace{0.25cm} % White vertical space after recipient's address
|
||||
\noindent #1 % Following this, insert the opening info
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% SIGNATURE STRUCTURE
|
||||
%------------------------------------------------------------------------------
|
||||
% The signature is a combination of the author's name, title and institution
|
||||
\signature{$author$, on behalf of all authors\\
|
||||
Email: $from_email$}
|
||||
|
||||
% I will later combine the option of inserting a signature within it
|
||||
|
||||
\renewcommand{\closing}[1]{
|
||||
\vspace{2.5mm} % Some whitespace after the letter content and before the signature
|
||||
\noindent % Stop paragraph indentation
|
||||
% \hspace*{\longindentation} % Move the signature right to the value of \longindentation
|
||||
\parbox{\indentedwidth}{
|
||||
\raggedright
|
||||
#1 % Print the signature text
|
||||
% \vskip 1.65cm % Whitespace between the closing text and author's name for a physical signature
|
||||
\\\includegraphics[height=0.6in, keepaspectratio=true]{$from_sign$}\\
|
||||
\fromsig % Prints the value of \signature{}, i.e. author name and title
|
||||
}
|
||||
}
|
||||
|
||||
%-------------------------------------------------------------------------------
|
||||
% AUTHOR'S INFORMATION
|
||||
%-------------------------------------------------------------------------------
|
||||
|
||||
\authordetails{
|
||||
$from_position$\\
|
||||
$from_department$\\ % Sender's department/institution
|
||||
$from_institution$\\
|
||||
$from_address$ % Sender's address
|
||||
% $from_city$, $from_state_province$\\ % Sender's city, state or province,
|
||||
% $from_postalcode$\\ % postal code
|
||||
% $from_country$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% RECIPIENT'S INFORMATION
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\recipientdetails{
|
||||
$to_professional_title$ $to_name$\\
|
||||
$if(to_journal)$
|
||||
\textit{$to_journal$}
|
||||
$endif$
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% HEADER CONTENTS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\fancypagestyle{firstpage}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
\fancypagestyle{empty}{
|
||||
\fancyhf{}
|
||||
\fancyhead[L]{
|
||||
\includegraphics[height=0.6in, keepaspectratio=true]{$from_institution_logo$}
|
||||
}
|
||||
\fancyhead[R]{$author$\\
|
||||
\footnotesize{
|
||||
$from_email$\\ % Sender's email address
|
||||
% $from_personal_website$ \\ % Sender's URL
|
||||
$from_phone$ % Sender's phone number
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
\pagestyle{plain}
|
||||
|
||||
\begin{document}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% TO ADDRESS
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\begin{letter}{\recipientdetails}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
% LETTER CONTENT
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\opening{$opening_greeting$}
|
||||
% \begin{doublespacing}
|
||||
|
||||
$body$
|
||||
|
||||
% \end{doublespacing}
|
||||
\closing{$closing_greeting$}
|
||||
|
||||
%------------------------------------------------------------------------------
|
||||
|
||||
\end{letter}
|
||||
\end{document}
|
Binary file not shown.
Before Width: | Height: | Size: 81 KiB |
Binary file not shown.
Before Width: | Height: | Size: 222 KiB |
Binary file not shown.
Before Width: | Height: | Size: 250 KiB |
Binary file not shown.
Before Width: | Height: | Size: 150 KiB |
|
@ -1,109 +0,0 @@
|
|||
.udot {
|
||||
text-decoration-line: underline;
|
||||
text-decoration-color: rgb(50, 50, 50);
|
||||
text-decoration-style: dashed;
|
||||
text-decoration-thickness: 1px;
|
||||
}
|
||||
|
||||
.good {
|
||||
background-color: forestgreen;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.bad {
|
||||
background-color: orangered;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.del {
|
||||
text-decoration-line: line-through;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 1.5px;
|
||||
}
|
||||
|
||||
|
||||
.todo {
|
||||
background-color: darkorange;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.com {
|
||||
background-color: #0025ff;
|
||||
font-weight: bold;
|
||||
color: lightyellow;
|
||||
}
|
||||
|
||||
.add {
|
||||
text-decoration-line: underline;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
background-color: violet;
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
|
||||
del {
|
||||
text-decoration-line: line-through;
|
||||
text-decoration-color: rgb(222 13 13);
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 1.0px;
|
||||
}
|
||||
|
||||
|
||||
ins {
|
||||
text-decoration-color: rgb(222 93 93);
|
||||
background-color: violet;
|
||||
text-decoration-style: initial;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
.clab {
|
||||
background-color: rgb(255, 245, 240);
|
||||
}
|
||||
|
||||
.rem {
|
||||
background-color: darkorange;
|
||||
color: lightyellow;
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
|
||||
#criticnav {
|
||||
position: fixed;
|
||||
z-index: 1100;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 120px;
|
||||
border-bottom: solid 1px #ffffff;
|
||||
margin: 0;
|
||||
padding: 10;
|
||||
background-color: rgb(143 38 38 / 95%);
|
||||
color: #ffffff;
|
||||
font-size: 12px;
|
||||
font-family: "Helvetica Neue", helvetica, arial, sans-serif !important
|
||||
}
|
||||
|
||||
#criticnav ul {
|
||||
list-style-type: none;
|
||||
width: 90%;
|
||||
margin: 0 auto;
|
||||
padding: 0
|
||||
}
|
||||
|
||||
#criticnav ul li {
|
||||
display: block;
|
||||
width: 100px;
|
||||
min-width: 80px;
|
||||
text-align: center;
|
||||
padding: 5px 0 3px !important;
|
||||
margin: 5px 2px !important;
|
||||
line-height: 1em;
|
||||
float: center;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
border-radius: 20px;
|
||||
border: 3px solid rgba(255,255,255,0);
|
||||
color: #fff !important
|
||||
}
|
||||
|
|
@ -1,504 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="quarto-1.7.29" />
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
|
||||
<meta name="author" content="Ming Su" />
|
||||
<meta name="dcterms.date" content="2025-07-27" />
|
||||
|
||||
<title>a letter</title>
|
||||
<style>
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
||||
div.column{flex: auto; overflow-x: auto;}
|
||||
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
||||
ul.task-list{list-style: none;}
|
||||
ul.task-list li input[type="checkbox"] {
|
||||
width: 0.8em;
|
||||
margin: 0 0.8em 0.2em -1em; /* quarto-specific, see https://github.com/quarto-dev/quarto-cli/issues/4556 */
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- htmldependencies:E3FAD763 -->
|
||||
|
||||
|
||||
<link rel="stylesheet" href="_extensions/inst/css/style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="quarto-content" class="page-columns page-rows-contents page-layout-article">
|
||||
<div id="quarto-margin-sidebar" class="sidebar margin-sidebar">
|
||||
</div>
|
||||
<main class="content" id="quarto-document-content">
|
||||
|
||||
<header id="title-block-header" class="quarto-title-block default">
|
||||
<div class="quarto-title">
|
||||
<h1 class="title">a letter</h1>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="quarto-title-meta">
|
||||
|
||||
<div>
|
||||
<div class="quarto-title-meta-heading">Author</div>
|
||||
<div class="quarto-title-meta-contents">
|
||||
<p>Ming Su </p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="quarto-title-meta-heading">Published</div>
|
||||
<div class="quarto-title-meta-contents">
|
||||
<p class="date">July 27, 2025</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</header>
|
||||
|
||||
|
||||
<p>We are pleased to submit our manuscript, <strong>“a letter”</strong>, for consideration at <strong><em><strong>?meta:submitjournal</strong></em></strong>.</p>
|
||||
<p>Among all algal-derived taste-and-odor compounds, 2-methylisoborneol (MIB) stands out as the most notorious and widespread offender. Since its initial identification, nearly 300 documented MIB-related odor outbreaks have been reported globally. With an exceptionally low odor threshold (10 ng L<sup>-1</sup>), MIB imparts a distinct earthy-musty smell that is immediately detectable in drinking water—transforming it from a mere water quality parameter into a critical public concern capable of triggering widespread complaints during outbreaks.</p>
|
||||
<p>The partitioning of MIB between intracellular and extracellular compartments critically determines treatment strategy selection. When MIB is primarily intracellular, conventional treatment processes such as coagulation-sedimentation can achieve cost-effective removal. However, when MIB becomes predominantly extracellular, utilities must implement advanced treatment options like ozone-activated carbon - a significantly more expensive approach that remains unavailable at many facilities. This fundamental distinction creates a critical decision point for water treatment optimization, where accurate prediction of MIB partitioning directly impacts both operational efficiency and treatment costs.</p>
|
||||
<p>Yet, current research and monitoring practices overlook a key limitation: most studies and water treatment plants measure only total MIB concentrations, assuming a fixed intracellular/extracellular ratio. This oversimplification leads to suboptimal process selection, unstable removal efficiency, and, in some cases, exacerbates MIB release through inappropriate treatment.</p>
|
||||
<p>Our study systematically investigates the dynamic partitioning of MIB between intracellular and extracellular compartments through controlled experiments with two major MIB-producing cyanobacteria (<em>Pseudanabaena</em> and <em>Planktothricoides</em>). We demonstrate that the extracellular fraction exhibits distinct growth phase-dependent patterns, where crowding effects during rapid growth phases trigger substantial MIB release. Building on these observations, we developed a <strong>mechanistic model</strong> based on logistic growth dynamics that quantitatively predicts MIB release patterns across the complete cyanobacterial life cycle.</p>
|
||||
<p>Our model’s application to Lake Taihu’s MIB outbreaks uncovered novel spatiotemporal patterns in cyanobacterial populations responsible for odorant production. More significantly, we established a predictive risk assessment framework that pinpoints key environmental drivers controlling both MIB occurrence and its release dynamics. This framework enables proactive identification of high-risk conditions preceding major release events.</p>
|
||||
<p>Key Findings of this study include:</p>
|
||||
<ol type="1">
|
||||
<li><p>Crowding effects during cellular growth govern MIB partitioning.</p></li>
|
||||
<li><p>The model successfully forecasts large-scale MIB release events.</p></li>
|
||||
<li><p>It provides actionable guidance for optimizing water treatment processes.</p></li>
|
||||
</ol>
|
||||
<p>To our knowledge, this is the first mechanistic framework explaining growth-dependent MIB release dynamics. Importantly, our approach shows promise for modeling other algal metabolites (e.g., geosmin, cyanotoxins), offering broader implications for water quality management.</p>
|
||||
<p>We believe this study will interest researchers working on algal metabolites, water treatment engineers, and resource managers addressing cyanobacterial blooms. The combination of fundamental insights and practical applications aligns well with <strong><em><strong>?meta:submitjournal</strong></em></strong>’s mission to bridge scientific discovery and environmental technology.</p>
|
||||
<p>To ensure a thorough and expert evaluation of our manuscript, we suggest the following potential reviewers with specialized expertise in algal metabolites, water treatment technologies, and cyanobacterial ecology. Additional information about each candidate reviewer is available via the <em>Web link</em> provided.</p>
|
||||
<p><strong>Potential Reviewers:</strong></p>
|
||||
<ol type="1">
|
||||
<li><p><strong>Tsair-Fuh Lin</strong>: National Cheng Kung University. Email: <a href="mailto:tflin@mail.ncku.edu.tw" class="email">tflin@mail.ncku.edu.tw</a>; <em><a href="https://researchoutput.ncku.edu.tw/en/persons/tsair-fuh-lin">Web Link</a></em></p></li>
|
||||
<li><p><strong>Arash Zamyadi</strong>: Civil & Environmental Engineering, Monash University. Email: <a href="mailto:Arash.Zamyadi@monash.edu" class="email">Arash.Zamyadi@monash.edu</a>; <em><a href="https://research.monash.edu/en/persons/arash-zamyadi">Web Link</a></em></p></li>
|
||||
<li><p><strong>Xuwei Deng</strong>: Institute of hydrobiology, Chinese Academy of Sciences. Email: <a href="mailto:dengxuwei@ihb.ac.cn" class="email">dengxuwei@ihb.ac.cn</a>; <em><a href="https://www.researchgate.net/profile/Deng-Xuwei">Web Link</a></em></p></li>
|
||||
<li><p><strong>Shushi Peng</strong>: Peking University. Email: <a href="mailto:speng@pku.edu.cn" class="email">speng@pku.edu.cn</a>; <em><a href="https://www.researchgate.net/profile/Shushi-Peng">Web Link</a></em></p></li>
|
||||
<li><p><strong>Tom Andersen</strong>: University of Oslo. Email: <a href="mailto:tom.andersen@ibv.uio.no" class="email">tom.andersen@ibv.uio.no</a>; <em><a href="https://www.mn.uio.no/ibv/english/people/aca/tomand/">Web Link</a></em></p></li>
|
||||
<li><p><strong>Muhe Diao</strong>: University of Calgray. Email: <a href="mailto:muhe.diao@ucalgary.ca" class="email">muhe.diao@ucalgary.ca</a>; <em><a href="https://www.ucalgary.ca/labs/ebg/people/muhe-diao">Web Link</a></em></p></li>
|
||||
</ol>
|
||||
<p>Thank you for considering our work. We would be pleased to address any questions or suggestions during the review process.</p>
|
||||
|
||||
</main>
|
||||
<!-- /main column -->
|
||||
<script id = "quarto-html-after-body" type="application/javascript">
|
||||
window.document.addEventListener("DOMContentLoaded", function (event) {
|
||||
const icon = "";
|
||||
const anchorJS = new window.AnchorJS();
|
||||
anchorJS.options = {
|
||||
placement: 'right',
|
||||
icon: icon
|
||||
};
|
||||
anchorJS.add('.anchored');
|
||||
const isCodeAnnotation = (el) => {
|
||||
for (const clz of el.classList) {
|
||||
if (clz.startsWith('code-annotation-')) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
const onCopySuccess = function(e) {
|
||||
// button target
|
||||
const button = e.trigger;
|
||||
// don't keep focus
|
||||
button.blur();
|
||||
// flash "checked"
|
||||
button.classList.add('code-copy-button-checked');
|
||||
var currentTitle = button.getAttribute("title");
|
||||
button.setAttribute("title", "Copied!");
|
||||
let tooltip;
|
||||
if (window.bootstrap) {
|
||||
button.setAttribute("data-bs-toggle", "tooltip");
|
||||
button.setAttribute("data-bs-placement", "left");
|
||||
button.setAttribute("data-bs-title", "Copied!");
|
||||
tooltip = new bootstrap.Tooltip(button,
|
||||
{ trigger: "manual",
|
||||
customClass: "code-copy-button-tooltip",
|
||||
offset: [0, -8]});
|
||||
tooltip.show();
|
||||
}
|
||||
setTimeout(function() {
|
||||
if (tooltip) {
|
||||
tooltip.hide();
|
||||
button.removeAttribute("data-bs-title");
|
||||
button.removeAttribute("data-bs-toggle");
|
||||
button.removeAttribute("data-bs-placement");
|
||||
}
|
||||
button.setAttribute("title", currentTitle);
|
||||
button.classList.remove('code-copy-button-checked');
|
||||
}, 1000);
|
||||
// clear code selection
|
||||
e.clearSelection();
|
||||
}
|
||||
const getTextToCopy = function(trigger) {
|
||||
const codeEl = trigger.previousElementSibling.cloneNode(true);
|
||||
for (const childEl of codeEl.children) {
|
||||
if (isCodeAnnotation(childEl)) {
|
||||
childEl.remove();
|
||||
}
|
||||
}
|
||||
return codeEl.innerText;
|
||||
}
|
||||
const clipboard = new window.ClipboardJS('.code-copy-button:not([data-in-quarto-modal])', {
|
||||
text: getTextToCopy
|
||||
});
|
||||
clipboard.on('success', onCopySuccess);
|
||||
if (window.document.getElementById('quarto-embedded-source-code-modal')) {
|
||||
const clipboardModal = new window.ClipboardJS('.code-copy-button[data-in-quarto-modal]', {
|
||||
text: getTextToCopy,
|
||||
container: window.document.getElementById('quarto-embedded-source-code-modal')
|
||||
});
|
||||
clipboardModal.on('success', onCopySuccess);
|
||||
}
|
||||
var localhostRegex = new RegExp(/^(?:http|https):\/\/localhost\:?[0-9]*\//);
|
||||
var mailtoRegex = new RegExp(/^mailto:/);
|
||||
var filterRegex = new RegExp('/' + window.location.host + '/');
|
||||
var isInternal = (href) => {
|
||||
return filterRegex.test(href) || localhostRegex.test(href) || mailtoRegex.test(href);
|
||||
}
|
||||
// Inspect non-navigation links and adorn them if external
|
||||
var links = window.document.querySelectorAll('a[href]:not(.nav-link):not(.navbar-brand):not(.toc-action):not(.sidebar-link):not(.sidebar-item-toggle):not(.pagination-link):not(.no-external):not([aria-hidden]):not(.dropdown-item):not(.quarto-navigation-tool):not(.about-link)');
|
||||
for (var i=0; i<links.length; i++) {
|
||||
const link = links[i];
|
||||
if (!isInternal(link.href)) {
|
||||
// undo the damage that might have been done by quarto-nav.js in the case of
|
||||
// links that we want to consider external
|
||||
if (link.dataset.originalHref !== undefined) {
|
||||
link.href = link.dataset.originalHref;
|
||||
}
|
||||
}
|
||||
}
|
||||
function tippyHover(el, contentFn, onTriggerFn, onUntriggerFn) {
|
||||
const config = {
|
||||
allowHTML: true,
|
||||
maxWidth: 500,
|
||||
delay: 100,
|
||||
arrow: false,
|
||||
appendTo: function(el) {
|
||||
return el.parentElement;
|
||||
},
|
||||
interactive: true,
|
||||
interactiveBorder: 10,
|
||||
theme: 'quarto',
|
||||
placement: 'bottom-start',
|
||||
};
|
||||
if (contentFn) {
|
||||
config.content = contentFn;
|
||||
}
|
||||
if (onTriggerFn) {
|
||||
config.onTrigger = onTriggerFn;
|
||||
}
|
||||
if (onUntriggerFn) {
|
||||
config.onUntrigger = onUntriggerFn;
|
||||
}
|
||||
window.tippy(el, config);
|
||||
}
|
||||
const noterefs = window.document.querySelectorAll('a[role="doc-noteref"]');
|
||||
for (var i=0; i<noterefs.length; i++) {
|
||||
const ref = noterefs[i];
|
||||
tippyHover(ref, function() {
|
||||
// use id or data attribute instead here
|
||||
let href = ref.getAttribute('data-footnote-href') || ref.getAttribute('href');
|
||||
try { href = new URL(href).hash; } catch {}
|
||||
const id = href.replace(/^#\/?/, "");
|
||||
const note = window.document.getElementById(id);
|
||||
if (note) {
|
||||
return note.innerHTML;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
});
|
||||
}
|
||||
const xrefs = window.document.querySelectorAll('a.quarto-xref');
|
||||
const processXRef = (id, note) => {
|
||||
// Strip column container classes
|
||||
const stripColumnClz = (el) => {
|
||||
el.classList.remove("page-full", "page-columns");
|
||||
if (el.children) {
|
||||
for (const child of el.children) {
|
||||
stripColumnClz(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
stripColumnClz(note)
|
||||
if (id === null || id.startsWith('sec-')) {
|
||||
// Special case sections, only their first couple elements
|
||||
const container = document.createElement("div");
|
||||
if (note.children && note.children.length > 2) {
|
||||
container.appendChild(note.children[0].cloneNode(true));
|
||||
for (let i = 1; i < note.children.length; i++) {
|
||||
const child = note.children[i];
|
||||
if (child.tagName === "P" && child.innerText === "") {
|
||||
continue;
|
||||
} else {
|
||||
container.appendChild(child.cloneNode(true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (window.Quarto?.typesetMath) {
|
||||
window.Quarto.typesetMath(container);
|
||||
}
|
||||
return container.innerHTML
|
||||
} else {
|
||||
if (window.Quarto?.typesetMath) {
|
||||
window.Quarto.typesetMath(note);
|
||||
}
|
||||
return note.innerHTML;
|
||||
}
|
||||
} else {
|
||||
// Remove any anchor links if they are present
|
||||
const anchorLink = note.querySelector('a.anchorjs-link');
|
||||
if (anchorLink) {
|
||||
anchorLink.remove();
|
||||
}
|
||||
if (window.Quarto?.typesetMath) {
|
||||
window.Quarto.typesetMath(note);
|
||||
}
|
||||
if (note.classList.contains("callout")) {
|
||||
return note.outerHTML;
|
||||
} else {
|
||||
return note.innerHTML;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var i=0; i<xrefs.length; i++) {
|
||||
const xref = xrefs[i];
|
||||
tippyHover(xref, undefined, function(instance) {
|
||||
instance.disable();
|
||||
let url = xref.getAttribute('href');
|
||||
let hash = undefined;
|
||||
if (url.startsWith('#')) {
|
||||
hash = url;
|
||||
} else {
|
||||
try { hash = new URL(url).hash; } catch {}
|
||||
}
|
||||
if (hash) {
|
||||
const id = hash.replace(/^#\/?/, "");
|
||||
const note = window.document.getElementById(id);
|
||||
if (note !== null) {
|
||||
try {
|
||||
const html = processXRef(id, note.cloneNode(true));
|
||||
instance.setContent(html);
|
||||
} finally {
|
||||
instance.enable();
|
||||
instance.show();
|
||||
}
|
||||
} else {
|
||||
// See if we can fetch this
|
||||
fetch(url.split('#')[0])
|
||||
.then(res => res.text())
|
||||
.then(html => {
|
||||
const parser = new DOMParser();
|
||||
const htmlDoc = parser.parseFromString(html, "text/html");
|
||||
const note = htmlDoc.getElementById(id);
|
||||
if (note !== null) {
|
||||
const html = processXRef(id, note);
|
||||
instance.setContent(html);
|
||||
}
|
||||
}).finally(() => {
|
||||
instance.enable();
|
||||
instance.show();
|
||||
});
|
||||
}
|
||||
} else {
|
||||
// See if we can fetch a full url (with no hash to target)
|
||||
// This is a special case and we should probably do some content thinning / targeting
|
||||
fetch(url)
|
||||
.then(res => res.text())
|
||||
.then(html => {
|
||||
const parser = new DOMParser();
|
||||
const htmlDoc = parser.parseFromString(html, "text/html");
|
||||
const note = htmlDoc.querySelector('main.content');
|
||||
if (note !== null) {
|
||||
// This should only happen for chapter cross references
|
||||
// (since there is no id in the URL)
|
||||
// remove the first header
|
||||
if (note.children.length > 0 && note.children[0].tagName === "HEADER") {
|
||||
note.children[0].remove();
|
||||
}
|
||||
const html = processXRef(null, note);
|
||||
instance.setContent(html);
|
||||
}
|
||||
}).finally(() => {
|
||||
instance.enable();
|
||||
instance.show();
|
||||
});
|
||||
}
|
||||
}, function(instance) {
|
||||
});
|
||||
}
|
||||
let selectedAnnoteEl;
|
||||
const selectorForAnnotation = ( cell, annotation) => {
|
||||
let cellAttr = 'data-code-cell="' + cell + '"';
|
||||
let lineAttr = 'data-code-annotation="' + annotation + '"';
|
||||
const selector = 'span[' + cellAttr + '][' + lineAttr + ']';
|
||||
return selector;
|
||||
}
|
||||
const selectCodeLines = (annoteEl) => {
|
||||
const doc = window.document;
|
||||
const targetCell = annoteEl.getAttribute("data-target-cell");
|
||||
const targetAnnotation = annoteEl.getAttribute("data-target-annotation");
|
||||
const annoteSpan = window.document.querySelector(selectorForAnnotation(targetCell, targetAnnotation));
|
||||
const lines = annoteSpan.getAttribute("data-code-lines").split(",");
|
||||
const lineIds = lines.map((line) => {
|
||||
return targetCell + "-" + line;
|
||||
})
|
||||
let top = null;
|
||||
let height = null;
|
||||
let parent = null;
|
||||
if (lineIds.length > 0) {
|
||||
//compute the position of the single el (top and bottom and make a div)
|
||||
const el = window.document.getElementById(lineIds[0]);
|
||||
top = el.offsetTop;
|
||||
height = el.offsetHeight;
|
||||
parent = el.parentElement.parentElement;
|
||||
if (lineIds.length > 1) {
|
||||
const lastEl = window.document.getElementById(lineIds[lineIds.length - 1]);
|
||||
const bottom = lastEl.offsetTop + lastEl.offsetHeight;
|
||||
height = bottom - top;
|
||||
}
|
||||
if (top !== null && height !== null && parent !== null) {
|
||||
// cook up a div (if necessary) and position it
|
||||
let div = window.document.getElementById("code-annotation-line-highlight");
|
||||
if (div === null) {
|
||||
div = window.document.createElement("div");
|
||||
div.setAttribute("id", "code-annotation-line-highlight");
|
||||
div.style.position = 'absolute';
|
||||
parent.appendChild(div);
|
||||
}
|
||||
div.style.top = top - 2 + "px";
|
||||
div.style.height = height + 4 + "px";
|
||||
div.style.left = 0;
|
||||
let gutterDiv = window.document.getElementById("code-annotation-line-highlight-gutter");
|
||||
if (gutterDiv === null) {
|
||||
gutterDiv = window.document.createElement("div");
|
||||
gutterDiv.setAttribute("id", "code-annotation-line-highlight-gutter");
|
||||
gutterDiv.style.position = 'absolute';
|
||||
const codeCell = window.document.getElementById(targetCell);
|
||||
const gutter = codeCell.querySelector('.code-annotation-gutter');
|
||||
gutter.appendChild(gutterDiv);
|
||||
}
|
||||
gutterDiv.style.top = top - 2 + "px";
|
||||
gutterDiv.style.height = height + 4 + "px";
|
||||
}
|
||||
selectedAnnoteEl = annoteEl;
|
||||
}
|
||||
};
|
||||
const unselectCodeLines = () => {
|
||||
const elementsIds = ["code-annotation-line-highlight", "code-annotation-line-highlight-gutter"];
|
||||
elementsIds.forEach((elId) => {
|
||||
const div = window.document.getElementById(elId);
|
||||
if (div) {
|
||||
div.remove();
|
||||
}
|
||||
});
|
||||
selectedAnnoteEl = undefined;
|
||||
};
|
||||
// Handle positioning of the toggle
|
||||
window.addEventListener(
|
||||
"resize",
|
||||
throttle(() => {
|
||||
elRect = undefined;
|
||||
if (selectedAnnoteEl) {
|
||||
selectCodeLines(selectedAnnoteEl);
|
||||
}
|
||||
}, 10)
|
||||
);
|
||||
function throttle(fn, ms) {
|
||||
let throttle = false;
|
||||
let timer;
|
||||
return (...args) => {
|
||||
if(!throttle) { // first call gets through
|
||||
fn.apply(this, args);
|
||||
throttle = true;
|
||||
} else { // all the others get throttled
|
||||
if(timer) clearTimeout(timer); // cancel #2
|
||||
timer = setTimeout(() => {
|
||||
fn.apply(this, args);
|
||||
timer = throttle = false;
|
||||
}, ms);
|
||||
}
|
||||
};
|
||||
}
|
||||
// Attach click handler to the DT
|
||||
const annoteDls = window.document.querySelectorAll('dt[data-target-cell]');
|
||||
for (const annoteDlNode of annoteDls) {
|
||||
annoteDlNode.addEventListener('click', (event) => {
|
||||
const clickedEl = event.target;
|
||||
if (clickedEl !== selectedAnnoteEl) {
|
||||
unselectCodeLines();
|
||||
const activeEl = window.document.querySelector('dt[data-target-cell].code-annotation-active');
|
||||
if (activeEl) {
|
||||
activeEl.classList.remove('code-annotation-active');
|
||||
}
|
||||
selectCodeLines(clickedEl);
|
||||
clickedEl.classList.add('code-annotation-active');
|
||||
} else {
|
||||
// Unselect the line
|
||||
unselectCodeLines();
|
||||
clickedEl.classList.remove('code-annotation-active');
|
||||
}
|
||||
});
|
||||
}
|
||||
const findCites = (el) => {
|
||||
const parentEl = el.parentElement;
|
||||
if (parentEl) {
|
||||
const cites = parentEl.dataset.cites;
|
||||
if (cites) {
|
||||
return {
|
||||
el,
|
||||
cites: cites.split(' ')
|
||||
};
|
||||
} else {
|
||||
return findCites(el.parentElement)
|
||||
}
|
||||
} else {
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
var bibliorefs = window.document.querySelectorAll('a[role="doc-biblioref"]');
|
||||
for (var i=0; i<bibliorefs.length; i++) {
|
||||
const ref = bibliorefs[i];
|
||||
const citeInfo = findCites(ref);
|
||||
if (citeInfo) {
|
||||
tippyHover(citeInfo.el, function() {
|
||||
var popup = window.document.createElement('div');
|
||||
citeInfo.cites.forEach(function(cite) {
|
||||
var citeDiv = window.document.createElement('div');
|
||||
citeDiv.classList.add('hanging-indent');
|
||||
citeDiv.classList.add('csl-entry');
|
||||
var biblioDiv = window.document.getElementById('ref-' + cite);
|
||||
if (biblioDiv) {
|
||||
citeDiv.innerHTML = biblioDiv.innerHTML;
|
||||
}
|
||||
popup.appendChild(citeDiv);
|
||||
});
|
||||
return popup.innerHTML;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</div> <!-- /content -->
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -1,55 +0,0 @@
|
|||
---
|
||||
title: "a letter"
|
||||
format:
|
||||
dwcl-html: default
|
||||
dwcl-pdf: default
|
||||
to_journal: "{{< meta submitjournal >}}"
|
||||
---
|
||||
|
||||
We are pleased to submit our manuscript, **“{{< meta title >}}”**, for consideration at ***{{< meta submitjournal >}}***.
|
||||
|
||||
|
||||
Among all algal-derived taste-and-odor compounds, 2-methylisoborneol (MIB) stands out as the most notorious and widespread offender. Since its initial identification, nearly 300 documented MIB-related odor outbreaks have been reported globally. With an exceptionally low odor threshold (10 ng L^-1^), MIB imparts a distinct earthy-musty smell that is immediately detectable in drinking water—transforming it from a mere water quality parameter into a critical public concern capable of triggering widespread complaints during outbreaks.
|
||||
|
||||
|
||||
The partitioning of MIB between intracellular and extracellular compartments critically determines treatment strategy selection. When MIB is primarily intracellular, conventional treatment processes such as coagulation-sedimentation can achieve cost-effective removal. However, when MIB becomes predominantly extracellular, utilities must implement advanced treatment options like ozone-activated carbon - a significantly more expensive approach that remains unavailable at many facilities. This fundamental distinction creates a critical decision point for water treatment optimization, where accurate prediction of MIB partitioning directly impacts both operational efficiency and treatment costs.
|
||||
|
||||
|
||||
Yet, current research and monitoring practices overlook a key limitation: most studies and water treatment plants measure only total MIB concentrations, assuming a fixed intracellular/extracellular ratio. This oversimplification leads to suboptimal process selection, unstable removal efficiency, and, in some cases, exacerbates MIB release through inappropriate treatment.
|
||||
|
||||
Our study systematically investigates the dynamic partitioning of MIB between intracellular and extracellular compartments through controlled experiments with two major MIB-producing cyanobacteria (*Pseudanabaena* and *Planktothricoides*). We demonstrate that the extracellular fraction exhibits distinct growth phase-dependent patterns, where crowding effects during rapid growth phases trigger substantial MIB release. Building on these observations, we developed a **mechanistic model** based on logistic growth dynamics that quantitatively predicts MIB release patterns across the complete cyanobacterial life cycle.
|
||||
|
||||
|
||||
Our model's application to Lake Taihu's MIB outbreaks uncovered novel spatiotemporal patterns in cyanobacterial populations responsible for odorant production. More significantly, we established a predictive risk assessment framework that pinpoints key environmental drivers controlling both MIB occurrence and its release dynamics. This framework enables proactive identification of high-risk conditions preceding major release events.
|
||||
|
||||
Key Findings of this study include:
|
||||
|
||||
1. Crowding effects during cellular growth govern MIB partitioning.
|
||||
|
||||
2. The model successfully forecasts large-scale MIB release events.
|
||||
|
||||
3. It provides actionable guidance for optimizing water treatment processes.
|
||||
|
||||
To our knowledge, this is the first mechanistic framework explaining growth-dependent MIB release dynamics. Importantly, our approach shows promise for modeling other algal metabolites (e.g., geosmin, cyanotoxins), offering broader implications for water quality management.
|
||||
|
||||
We believe this study will interest researchers working on algal metabolites, water treatment engineers, and resource managers addressing cyanobacterial blooms. The combination of fundamental insights and practical applications aligns well with ***{{< meta submitjournal >}}***'s mission to bridge scientific discovery and environmental technology.
|
||||
|
||||
To ensure a thorough and expert evaluation of our manuscript, we suggest the following potential reviewers with specialized expertise in algal metabolites, water treatment technologies, and cyanobacterial ecology. Additional information about each candidate reviewer is available via the *Web link* provided.
|
||||
|
||||
|
||||
**Potential Reviewers:**
|
||||
|
||||
1. **Tsair-Fuh Lin**: National Cheng Kung University. Email: <tflin@mail.ncku.edu.tw>; *[Web Link](https://researchoutput.ncku.edu.tw/en/persons/tsair-fuh-lin)*
|
||||
|
||||
2. **Arash Zamyadi**: Civil & Environmental Engineering, Monash University. Email: <Arash.Zamyadi@monash.edu>; *[Web Link](https://research.monash.edu/en/persons/arash-zamyadi)*
|
||||
|
||||
3. **Xuwei Deng**: Institute of hydrobiology, Chinese Academy of Sciences. Email: <dengxuwei@ihb.ac.cn>; *[Web Link](https://www.researchgate.net/profile/Deng-Xuwei)*
|
||||
|
||||
4. **Shushi Peng**: Peking University. Email: <speng@pku.edu.cn>; *[Web Link](https://www.researchgate.net/profile/Shushi-Peng)*
|
||||
|
||||
5. **Tom Andersen**: University of Oslo. Email: <tom.andersen@ibv.uio.no>; *[Web Link](https://www.mn.uio.no/ibv/english/people/aca/tomand/)*
|
||||
|
||||
6. **Muhe Diao**: University of Calgray. Email: <muhe.diao@ucalgary.ca>; *[Web Link](https://www.ucalgary.ca/labs/ebg/people/muhe-diao)*
|
||||
|
||||
Thank you for considering our work. We would be pleased to address any questions or suggestions during the review process.
|
||||
|
Loading…
Reference in New Issue