seq-here 0.1.0

A fast tool for bio-sequence file processing.
Documentation
<!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">
    <!-- Add highlight.js CSS -->
    <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;
        }
        
        /* Additional styles for highlighted code blocks */
        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>
                
                <!-- Dependency Configuration -->
                <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>
                
                <!-- Sequence Extraction -->
                <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>
                
                <!-- Annotation Processing -->
                <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>
    
    <!-- Add highlight.js JavaScript -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script>
    <!-- Add Rust language support -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/languages/rust.min.js"></script>
    <!-- Add Shell/Bash language support -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/languages/bash.min.js"></script>
    <!-- Add TOML language support -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/languages/toml.min.js"></script>
    
    <script>
        // Initialize highlight.js
        document.addEventListener('DOMContentLoaded', (event) => {
            document.querySelectorAll('pre code').forEach((block) => {
                hljs.highlightElement(block);
            });
        });
    </script>
</body>
</html>