<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tutorials and Documentation - Aropha AI</title>
<script src="https://d3js.org/d3.v7.min.js"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap');
/* General Styles */
body {
font-family: 'Roboto', sans-serif;
margin: 0;
padding: 0;
background: #ffffff;
color: #222a35;
}
.wrapper {
max-width: 1200px;
margin: 0 auto;
border-radius: 15px;
padding: 20px;
margin-top: 140px;
}
.top-bar {
background: #222a35;
color: #ffffff;
padding: 15px 0;
text-align: center;
font-weight: bold;
font-size: 1.5em;
display: flex;
flex-direction: column;
align-items: center;
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 1000;
}
.logo-container {
display: flex;
justify-content: center;
width: 100%;
padding: 10px 0;
}
.top-bar img.logo {
height: 50px;
}
.nav-container {
display: flex;
justify-content: center;
width: 100%;
padding: 10px 0;
}
.button-container {
display: flex;
gap: 20px;
align-items: center;
}
.btn {
color: #ffffff;
text-decoration: none;
font-size: 14px;
font-weight: normal;
transition: all 0.3s ease;
padding: 5px 10px;
}
.btn:hover {
color: #66ccff;
}
.btn.active {
color: #66ccff;
}
/* dropdown style */
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #ffffff;
min-width: 200px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
border-radius: 5px;
margin-top: 5px;
}
.dropdown-content a {
color: #222a35;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
font-size: 14px;
}
.dropdown:hover .dropdown-content {
display: block;
}
.dropdown-content a:hover {
background-color: #f1f1f1;
color: #66ccff;
}
.dropdown-content a.active {
color: #66ccff;
}
/* Content Styles */
.content {
padding: 20px 40px;
text-align: left;
}
section {
margin-bottom: 40px;
padding: 20px;
border-radius: 10px;
background: #eeeeee;
color: #222a35;
}
h1 {
text-align: center;
color: #222a35;
font-size: 2.5em;
margin-bottom: 40px;
}
h2 {
color: #222a35;
border-bottom: 2px solid #66ccff;
padding-bottom: 8px;
}
p { line-height: 1.6; }
.img-center {
display: block;
margin: 0 auto;
}
/* Table styles */
.table-container {
overflow-x: auto;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
th, td {
padding: 12px;
text-align: left;
border: 1px solid #ddd;
}
th {
background-color: #222a35;
color: white;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
footer {
text-align: center;
padding: 20px 0;
background: #222a35;
color: #ffffff;
margin-top: 40px;
}
footer a {
color: #66ccff;
text-decoration: none;
}
footer a:hover {
text-decoration: underline;
}
/* D3.js Flowchart Styles */
.node rect {
fill: #f5f5f5;
stroke: #222a35;
stroke-width: 2px;
rx: 10px;
ry: 10px;
transition: all 0.3s ease;
}
.node.decision rect {
fill: #222a35;
stroke: #66ccff;
}
.node.engine rect {
fill: #ECF5FF;
stroke: #66ccff;
stroke-width: 3px;
filter: drop-shadow(3px 3px 5px rgba(0,0,0,0.2));
}
.node text {
font-size: 14px;
text-anchor: middle;
dominant-baseline: middle;
font-family: 'Roboto', sans-serif;
}
.node.decision text {
fill: #ffffff;
}
.node.engine text {
font-weight: bold;
font-style: italic;
fill: #222a35;
}
.link {
stroke: #222a35;
stroke-width: 2px;
fill: none;
}
.link-label {
font-size: 12px;
font-family: 'Roboto', sans-serif;
fill: #666666;
}
.node:hover rect {
filter: drop-shadow(3px 3px 5px rgba(0,0,0,0.3));
cursor: pointer;
}
</style>
</head>
<body>
<div class="top-bar">
<div class="logo-container">
<img src="https://www.users.aropha.com/static/assets/img/logo-rectangular.png" alt="Aropha Logo" class="logo">
</div>
<div class="nav-container">
<div class="button-container">
<a href="/home.html" class="btn">Home</a>
<a href="/user_registration.html" class="btn">User Registration</a>
<div class="dropdown">
<a href="/tutorials.html" class="btn active">Tutorials and Documentations</a>
<div class="dropdown-content">
<a href="#ai-engines" onclick="scrollToSection('ai-engines')" class="active">AI Engines</a>
<a href="#material-morphology" onclick="scrollToSection('material-morphology')">Material Morphology</a>
<a href="#method" onclick="scrollToSection('method')">Method</a>
</div>
</div>
<a href="/activate_free_trial.html" class="btn">Activate Free Trial</a>
<a href="/aropha_data_submission.html" class="btn">Data Processing and Credits</a>
<a href="/Biodegrability_screening_case_study.html" class="btn">Biodegradability Case Study</a>
<a href="/purchase_ai_engine_credits.html" class="btn">Purchase Credits</a>
</div>
</div>
</div>
<div class="wrapper">
<div class="content">
<section>
<h2>Chemical Data Entry</h2>
<p>Chemical data can be provided in one of three ways:</p>
<ul>
<li>Full SMILES notation of the substance</li>
<li>in-silico Polymer Synthesis from Monomer Units</li>
<li>IR Data Entry</li>
</ul>
<img src="images/image 7.png" alt="Chemical Data Entry" class="img-center" style="max-width:90%;">
</section>
<section id="ai-engines">
<h2>AI Engines</h2>
<p>Our intelligent engine selection system helps you choose the perfect AI model for your specific needs. Follow the flowchart below to identify the most suitable engine for your material:</p>
<div style="background: #ffffff; padding: 20px; border-radius: 10px;">
<svg width="1000" height="500"></svg>
</div>
<div class="table-container">
<h3>Engine Specifications</h3>
<table>
<thead>
<tr>
<th>AI Engine</th>
<th>Chemical Space</th>
<th>Degree of Polymerization</th>
<th>Suggested MW for small molecules</th>
</tr>
</thead>
<tbody>
<tr>
<td>Aropha Former</td>
<td>Small Molecule + Macromolecular Polymer</td>
<td>≤ 100</td>
<td>≤ 1000</td>
</tr>
<tr>
<td>ArophaGrapher</td>
<td>Small Molecule + Macromolecular Polymer</td>
<td>≤ 2000</td>
<td>≥ 1000</td>
</tr>
<tr>
<td>ArophaPolyformer</td>
<td>Macromolecular Polymer</td>
<td>Custom</td>
<td>N/A</td>
</tr>
</tbody>
</table>
</div>
</section>
<section id="material-morphology">
<h2>Material Morphology</h2>
<p>
We consider the impact of material morphology. Please select the shape type that best matches your material from our list and provide the relevant parameters.
</p>
<img src="images/image 5.png" alt="Material Morphology" class="img-center" style="max-width:70%;">
</section>
<section id="method">
<h2>Method</h2>
<p>
You can choose from 60 standard methods for your experiment or design a customized method tailored to specific environmental conditions.
</p>
<img src="images/image 6.png" alt="Method" class="img-center" style="max-width:70%;">
</section>
</div>
</div>
<footer>
<p>
Follow us on <a href="https://www.linkedin.com/company/aropha/">LinkedIn</a> | © 2025 Aropha Inc. All Rights Reserved.
</p>
</footer>
<script>
// navagate
function scrollToSection(sectionId) {
const section = document.getElementById(sectionId);
if (section) {
const topOffset = section.offsetTop - 150;
window.scrollTo({
top: topOffset,
behavior: 'smooth'
});
}
}
// dropdown menu activated
document.querySelectorAll('.dropdown-content a').forEach(link => {
link.addEventListener('click', (e) => {
document.querySelectorAll('.dropdown-content a').forEach(a => a.classList.remove('active'));
e.target.classList.add('active');
});
});
// D3.js flowchart
const data = {
nodes: [
{ id: "Small\nMolecule", x: 100, y: 100, type: "default" },
{ id: "Polymer", x: 100, y: 350, type: "default" },
{ id: "Molecular\nWeight", x: 300, y: 100, type: "decision" },
{ id: "Degree of\nPolymerization", x: 300, y: 350, type: "decision" },
{ id: "Aropha\nFormer", x: 600, y: 100, type: "engine" },
{ id: "Aropha\nGrapher", x: 600, y: 250, type: "engine" },
{ id: "Aropha\nPolyformer", x: 600, y: 400, type: "engine" }
],
links: [
{ source: "Small\nMolecule", target: "Molecular\nWeight", label: "" },
{ source: "Molecular\nWeight", target: "Aropha\nFormer", label: "MW ≤ 1000" },
{ source: "Molecular\nWeight", target: "Aropha\nGrapher", label: "MW > 1000" },
{ source: "Polymer", target: "Degree of\nPolymerization", label: "" },
{ source: "Degree of\nPolymerization", target: "Aropha\nFormer", label: "DP ≤ 100" },
{ source: "Degree of\nPolymerization", target: "Aropha\nGrapher", label: "100 < DP ≤ 2000" },
{ source: "Degree of\nPolymerization", target: "Aropha\nPolyformer", label: "Custom DP" }
]
};
const svg = d3.select("svg");
const g = svg.append("g");
// Create arrow marker
svg.append("defs").append("marker")
.attr("id", "arrowhead")
.attr("viewBox", "-0 -5 10 10")
.attr("refX", 20)
.attr("refY", 0)
.attr("orient", "auto")
.attr("markerWidth", 6)
.attr("markerHeight", 6)
.append("path")
.attr("d", "M 0,-5 L 10,0 L 0,5")
.attr("fill", "#222a35");
// Create links
const linkGroup = g.append("g").attr("class", "links");
const link = linkGroup.selectAll(".link")
.data(data.links)
.enter()
.append("g");
link.append("path")
.attr("class", "link")
.attr("marker-end", "url(#arrowhead)")
.attr("d", d => {
const sourceNode = data.nodes.find(n => n.id === d.source);
const targetNode = data.nodes.find(n => n.id === d.target);
return `M ${sourceNode.x + 80} ${sourceNode.y}
L ${targetNode.x - 80} ${targetNode.y}`;
});
link.append("text")
.attr("class", "link-label")
.attr("x", d => {
const sourceNode = data.nodes.find(n => n.id === d.source);
const targetNode = data.nodes.find(n => n.id === d.target);
return (sourceNode.x + targetNode.x) / 2;
})
.attr("y", d => {
const sourceNode = data.nodes.find(n => n.id === d.source);
const targetNode = data.nodes.find(n => n.id === d.target);
return (sourceNode.y + targetNode.y) / 2 - 10;
})
.text(d => d.label)
.attr("text-anchor", "middle");
// Create nodes
const nodeGroup = g.append("g").attr("class", "nodes");
const node = nodeGroup.selectAll(".node")
.data(data.nodes)
.enter()
.append("g")
.attr("class", d => `node ${d.type}`)
.attr("transform", d => `translate(${d.x - 60},${d.y - 25})`);
node.append("rect")
.attr("width", 120)
.attr("height", 50);
node.append("text")
.attr("x", 60)
.attr("y", 25)
.text(d => d.id)
.each(function(d) {
const text = d3.select(this);
const words = d.id.split('\n');
text.text('');
words.forEach((word, i) => {
text.append("tspan")
.attr("x", 60)
.attr("dy", i ? "1.2em" : "-0.6em")
.text(word);
});
});
// Add zoom behavior
const zoom = d3.zoom()
.scaleExtent([0.5, 2])
.on("zoom", (event) => {
g.attr("transform", event.transform);
});
svg.call(zoom);
</script>
</body>
</html>