<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="UTF-8">
<title>Seq-Here: Bio-sequence Processing</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/atom-one-dark.min.css">
<style>
:root {
--primary: #2c3e50;
--secondary: #29B6F6;
--accent: #e74c3c;
--code-bg: #f5f5f5;
--code-border: #ddd;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
line-height: 1.6;
color: #333;
}
.header {
background: linear-gradient(145deg, var(--primary) 25%, var(--secondary) 100%);
color: white;
padding: 4rem 1rem;
margin-bottom: 2rem;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 1rem;
}
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 2rem;
margin: 2rem 0;
}
.card {
background: white;
border-radius: 8px;
padding: 1.5rem;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
border: 1px solid #ddd;
}
h1 {
font-size: 3rem;
margin-bottom: 1rem;
}
#title-name>span {
padding-left: 1.5rem;
font-size: 1rem;
color: rgba(255,255,255,0.6);
}
h2 {
color: var(--primary);
margin: 2rem 0 1rem;
border-bottom: 2px solid #eee;
padding-bottom: 0.5rem;
}
h3 {
margin: 1rem 0 0.5rem;
color: var(--primary);
}
a {
color: var(--secondary);
text-decoration: none;
}
a:hover {
color: var(--accent);
text-decoration: underline;
}
footer {
background: var(--primary);
color: white;
padding: 2rem 1rem;
margin-top: 3rem;
text-align: center;
}
.button {
display: inline-block;
padding: 0.8rem 1.5rem;
background: var(--secondary);
color: white;
border-radius: 5px;
margin: 1rem 0;
transition: transform 0.2s;
}
.button:hover {
transform: translateY(-2px);
box-shadow: 0 3px 6px rgba(0,0,0,0.15);
}
pre {
background: var(--code-bg);
border: 1px solid var(--code-border);
border-radius: 4px;
padding: 1rem;
overflow-x: auto;
margin: 1rem 0;
line-height: 1.4;
}
code {
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
font-size: 0.9rem;
}
pre code {
padding: 0;
background: transparent;
border: none;
}
.hljs {
padding: 0;
background: transparent;
}
.code-comment {
color: #6a737d;
font-style: italic;
}
.feature-section {
margin-bottom: 2rem;
}
@media (max-width: 768px) {
.container {
padding: 0 1rem;
}
h1 {
font-size: 2rem;
}
}
</style>
</head>
<body>
<header class="header">
<div class="container">
<h1 id="title-name">Seq-Here<span>version: 0.1.0</span></h1>
<p class="lead">A fast toolkit for bioinformatics sequence processing, written by Rust.</p>
<div style="margin-top: 2rem;">
<a href="#getting-started" class="button">Get Started</a>
<a href="https://github.com/bio-here/seq-here" class="button" target="_blank">View on GitHub</a>
<a href="https://crates.io/crates/seq-here" class="button" target="_blank">View on Crates.io</a>
</div>
</div>
</header>
<main class="container">
<section id="h-feature">
<h2>Features</h2>
<div class="card-grid">
<div class="card">
<h3>Lightning Fast</h3>
<p>Based on rust programming language with parallel processing and memory-mapped files for high performance.</p>
</div>
<div class="card">
<h3>Versatile Formats</h3>
<p>Support for FASTA, FASTQ, GFF/GTF and other common bioinformatics formats.</p>
</div>
<div class="card">
<h3>Powerful Extraction</h3>
<p>Extract sequences or segments based on IDs, specific positions, or annotation features with precise control over what you need.</p>
</div>
</div>
</section>
<section id="h-getting-started">
<h2 id="getting-started">Getting Started</h2>
<div class="card">
<h3>Command-line Application</h3>
<p>Use our Command-line App for quick sequence processing:</p>
<pre><code class="language-bash"># Install from crates.io
cargo install seq-here
# Get basic information from sequence files
seq-here info fa sample.fasta</code></pre>
<div class="feature-section">
<h3>Extract Sequences by ID</h3>
<pre><code class="language-bash"># Extract sequences with specific ID
seq-here extract segment sample.fasta --str GhID000001 -o output.fasta
# Extract sequences with IDs from a file
seq-here extract segment sample.fasta --file ids.txt -o output.fasta
# Extract specific region from sequence (positions 100-200)
seq-here extract segment sample.fasta --str GhID000001 --start 100 --end 200</code></pre>
</div>
<div class="feature-section">
<h3>Extract Annotated Features</h3>
<pre><code class="language-bash"># Extract all annotated features
seq-here extract explain --seq sample.fasta --gff annotation.gff -o output_dir
# Extract only specific feature types
seq-here extract explain --seq sample.fasta --gff annotation.gff --type CDS,gene -o output_dir</code></pre>
</div>
<div class="feature-section">
<h3>Process Files</h3>
<pre><code class="language-bash"># Combine multiple files
seq-here process combine file1.fasta,file2.fasta -o combined.fasta
seq-here process combine file_folder/</code></pre>
</div>
</div>
<br>
<div class="card">
<h3>Library Crate</h3>
<p>Use our lib crate in your Rust project:</p>
<div class="feature-section">
<h3>1. Add Dependency</h3>
<pre><code class="language-toml"># Cargo.toml
[dependencies]
seq-here = "0.0.6"</code></pre>
</div>
<div class="feature-section">
<h3>2. Extract Sequences by ID</h3>
<pre><code class="language-rust">// Import required modules
use seq_here::extract::ExtractSegment;
use std::path::PathBuf;
fn extract_sequences() {
let input_files = vec![PathBuf::from("sample.fasta")];
let output_file = PathBuf::from("output.fasta");
// Extract complete sequence
ExtractSegment::extract_id(
input_files.clone(),
"SEQUENCE_ID".to_string(),
output_file.clone(),
None, // start position (optional)
None // end position (optional)
);
// Extract specific segment (positions 10-50)
ExtractSegment::extract_id(
input_files,
"SEQUENCE_ID".to_string(),
output_file,
Some(10), // start position
Some(50) // end position
);
}</code></pre>
</div>
<div class="feature-section">
<h3>3. Extract Features from Annotation Files</h3>
<pre><code class="language-rust">// Import annotation processing module
use seq_here::extract::ExtractExplain;
use std::path::PathBuf;
fn extract_annotations() {
// Prepare input files
let seq_files = vec![PathBuf::from("genome.fasta")];
let anno_files = vec![PathBuf::from("annotation.gff")];
let output_dir = PathBuf::from("output_directory");
// Filter for specific feature types (e.g., CDS, gene)
let feature_types = Some(vec!["CDS".to_string(), "gene".to_string()]);
// Execute extraction
ExtractExplain::extract(
seq_files,
anno_files,
output_dir,
feature_types // Use None to extract all features
);
}</code></pre>
</div>
</div>
</section>
<section id="h-contact-us">
<h2>Contact Us</h2>
<p>For any questions or suggestions, please contact us at <a href="mailto:zhixiaovo@gmail.com">zhixiaovo@gmail.com</a>
</section>
</main>
<footer>
<div class="container">
<p>© 2025 <a href="https://github.com/bio-here">bio-here</a>. Released under MIT License.</p>
<p>Found an issue? <a href="https://github.com/bio-here/seq-here/issues">Report it on GitHub</a></p>
</div>
</footer>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/languages/rust.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/languages/bash.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/languages/toml.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', (event) => {
document.querySelectorAll('pre code').forEach((block) => {
hljs.highlightElement(block);
});
});
</script>
</body>
</html>