Repository 'erga_ear'
hg clone https://toolshed.g2.bx.psu.edu/repos/bgruening/erga_ear

Changeset 0:8c99976de71e (2024-06-07)
Next changeset 1:b61022e1b807 (2024-07-09)
Commit message:
planemo upload for repository https://github.com/ERGA-consortium/EARs/tree/main commit e9db2e88e55a442d7f8fdb5e8e86330410d2e92d
added:
macros.xml
make_EAR.py
make_EAR.xml
test-data/EAR.pdf
test-data/EAR_log
test-data/blob1.png
test-data/blob2.png
test-data/ele.asm1_post_gfastats.txt
test-data/ele.asm2_post_gfastats.txt
test-data/ele_post_merqOutput.completeness.stats
test-data/ele_post_merqOutput.ele_post.asm1.spectra-cn.ln.png
test-data/ele_post_merqOutput.ele_post.asm2.spectra-cn.ln.png
test-data/ele_post_merqOutput.qv
test-data/ele_post_merqOutput.spectra-asm.ln.png
test-data/ele_post_merqOutput.spectra-cn.ln.png
test-data/ele_pre.asm1_gfastats.txt
test-data/ele_pre.asm2_gfastats.txt
test-data/ele_pre_merqOutput.completeness.stats
test-data/ele_pre_merqOutput.qv
test-data/genomescope_results_summary.txt
test-data/pretext_snake1.png
test-data/pretext_snake2.png
test-data/short_summary.specific.mammalia_odb10.post.asm1.txt
test-data/short_summary.specific.mammalia_odb10.post.asm2.txt
test-data/short_summary.specific.mammalia_odb10.pre.asm1.txt
test-data/short_summary.specific.mammalia_odb10.pre.asm2.txt
test-data/smudgeplot_verbose_summary.txt
b
diff -r 000000000000 -r 8c99976de71e macros.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,24 @@
+<macros>
+    <token name="@TOOL_VERSION@">1.0.0</token>
+    <token name="@VERSION_SUFFIX@">0</token>
+    <token name="@PROFILE@">23.2</token>
+    <xml name="creator">
+        <creator>
+            <organization name="Galaxy EU" url="https://galaxyproject.org/eu/"/>
+        </creator>
+    </xml>
+    <xml name="citations">
+        <citations>
+            <citation type="bibtex">
+                @misc{github_EAR,
+                    author = {Deigo De Panis},
+                    title = {EAR: A tool for compiling statistics and reports from Assembly pipeline for assembly review process},
+                    year = {2024},
+                    publisher = {GitHub},
+                    journal = {GitHub repository},
+                    url = {https://github.com/ERGA-consortium/EARs/tree/main}
+                }
+            </citation>
+        </citations>
+    </xml>
+</macros>
\ No newline at end of file
b
diff -r 000000000000 -r 8c99976de71e make_EAR.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make_EAR.py Fri Jun 07 14:23:49 2024 +0000
[
b'@@ -0,0 +1,1084 @@\n+\n+import argparse\n+import glob\n+import logging\n+import math\n+import os\n+import re\n+import sys\n+from datetime import datetime\n+\n+import pytz\n+import requests\n+import yaml\n+from reportlab.lib import colors\n+from reportlab.lib.pagesizes import A4\n+from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle\n+from reportlab.lib.units import cm\n+from reportlab.platypus import Image, PageBreak, Paragraph, SimpleDocTemplate, Spacer, Table, TableStyle\n+\n+\n+# make_EAR_glxy.py\n+# CAUTION: This is for the Galaxy version!\n+# by Diego De Panis\n+# ERGA Sequencing and Assembly Committee\n+EAR_version = "v24.05.20_glxy_beta"\n+\n+\n+def make_report(yaml_file):\n+    logging.basicConfig(filename=\'EAR.log\', level=logging.INFO)\n+    # Read the content from EAR.yaml file\n+    with open(yaml_file, "r") as file:\n+        yaml_data = yaml.safe_load(file)\n+\n+    # FUNCTIONS ###################################################################################\n+\n+    def format_number(value):\n+        try:\n+            value_float = float(value)\n+            if value_float.is_integer():\n+                # format as an integer if no decimal part\n+                return f\'{int(value_float):,}\'\n+            else:\n+                # format as a float\n+                return f\'{value_float:,}\'\n+        except ValueError:\n+            # return the original value if it can\'t be converted to a float\n+            return value\n+\n+    # extract gfastats values\n+    def extract_gfastats_values(content, keys):\n+        return [re.findall(f"{key}: (.+)", content)[0] for key in keys]\n+\n+    keys = [\n+        "Total scaffold length",\n+        "GC content %",\n+        "# gaps in scaffolds",\n+        "Total gap length in scaffolds",\n+        "# scaffolds",\n+        "Scaffold N50",\n+        "Scaffold L50",\n+        "Scaffold L90",\n+        "# contigs",\n+        "Contig N50",\n+        "Contig L50",\n+        "Contig L90",\n+    ]\n+\n+    display_names = keys.copy()\n+    display_names[display_names.index("Total scaffold length")] = "Total bp"\n+    total_length_index = keys.index("Total scaffold length")\n+    display_names[display_names.index("GC content %")] = "GC %"\n+    display_names[display_names.index("Total gap length in scaffolds")] = "Total gap bp"\n+    display_names[display_names.index("# scaffolds")] = "Scaffolds"\n+    display_names[display_names.index("# contigs")] = "Contigs"\n+\n+    gaps_index = keys.index("# gaps in scaffolds")\n+    exclusion_list = ["# gaps in scaffolds"]\n+\n+    # extract Total bp from gfastats report\n+    def extract_total_bp_from_gfastats(gfastats_path):\n+        with open(gfastats_path, "r") as f:\n+            content = f.read()\n+        total_bp = re.search(r"Total scaffold length: (.+)", content).group(1)\n+        total_bp = int(total_bp.replace(\',\', \'\'))\n+        return "{:,}".format(total_bp)\n+\n+    # compute EBP quality metric\n+    def compute_ebp_metric(haplotype, gfastats_path, qv_value):\n+        keys_needed = ["Contig N50", "Scaffold N50"]\n+        content = \'\'\n+        with open(gfastats_path, "r") as f:\n+            content = f.read()\n+\n+        values = extract_gfastats_values(content, keys_needed)\n+        contig_n50_log = math.floor(math.log10(int(values[0].replace(\',\', \'\'))))\n+        scaffold_n50_log = math.floor(math.log10(int(values[1].replace(\',\', \'\'))))\n+\n+        return f"Obtained EBP quality metric for {haplotype}: {contig_n50_log}.{scaffold_n50_log}.Q{math.floor(float(qv_value))}"\n+\n+    # extract qv values\n+    def get_qv_value(file_path, order, tool, haplotype):\n+        try:\n+            with open(file_path, \'r\') as file:\n+                lines = file.readlines()\n+                if len(lines) > order and (len(lines) == 1 or lines[2].split(\'\\t\')[0].strip() == "Both"):\n+                    target_line = lines[order]\n+                    fourth_column_value = target_line.split(\'\\t\')[3]\n+                    return fourth_column_value\n+        except Exception as e:\n+            logging.error(f"Error'..b'png_file is not empty, display it\n+                    if png_file:\n+                        # Create image object\n+                        img = Image(png_file, width=20 * cm, height=20 * cm)\n+                        elements.append(img)\n+\n+                        # Create paragraph for filename with haplotype name\n+                        blob_text = f"<b>{haplotype}.</b> Bubble plot circles are scaled by sequence length, positioned by coverage and GC proportion, and coloured by taxonomy. Histograms show total assembly length distribution on each axis."\n+                        blob_paragraph = Paragraph(blob_text, styles["midiStyle"])\n+                        elements.append(blob_paragraph)\n+                    else:\n+                        # Add paragraph for missing image\n+                        missing_png_paragraph = Paragraph(f"<b>{haplotype}</b> PNG is missing!", styles["midiStyle"])\n+                        elements.append(missing_png_paragraph)\n+\n+                    # Add a page break after each image and its description\n+                    elements.append(PageBreak())\n+\n+            tool_count += 1\n+\n+    # SECTION 6 -----------------------------------------------------------------------------------\n+\n+    # Add data profile section subtitle\n+    subtitle = Paragraph("Data profile", styles[\'TitleStyle\'])\n+    elements.append(subtitle)\n+\n+    # Spacer\n+    elements.append(Spacer(1, 24))\n+\n+    # Create the DATA PROFILE table\n+    data_table = Table(table_data)\n+\n+    # Style the table\n+    data_table.setStyle(TableStyle([\n+        (\'BACKGROUND\', (0, 0), (0, -1), \'#e7e7e7\'),  # grey background for the first column\n+        (\'ALIGN\', (0, 0), (-1, -1), \'CENTER\'),         # center alignment\n+        (\'FONTNAME\', (0, 0), (-1, -1), \'Courier\'),      # remove bold font\n+        (\'FONTSIZE\', (0, 0), (-1, -1), 12),             # font size for the header\n+        (\'BOTTOMPADDING\', (0, 0), (-1, -1), 8),\n+        ("GRID", (0, 0), (-1, -1), 0.5, colors.black)\n+    ]))\n+\n+    # Add DATA PROFILE table\n+    elements.append(data_table)\n+\n+    # Spacer\n+    elements.append(Spacer(1, 32))\n+\n+    # Add assembly pipeline section subtitle\n+    subtitle = Paragraph("Assembly pipeline", styles[\'TitleStyle\'])\n+    elements.append(subtitle)\n+\n+    # Spacer\n+    elements.append(Spacer(1, 24))\n+\n+    # Add ASM PIPELINE tree\n+    elements.append(Paragraph(asm_pipeline_tree, styles[\'treeStyle\']))\n+\n+    # Spacer\n+    elements.append(Spacer(1, 32))\n+\n+    # Add curation pipeline section subtitle\n+    subtitle = Paragraph("Curation pipeline", styles[\'TitleStyle\'])\n+    elements.append(subtitle)\n+\n+    # Spacer\n+    elements.append(Spacer(1, 24))\n+\n+    # Add CURATION PIPELINE tree\n+    elements.append(Paragraph(curation_pipeline_tree, styles[\'treeStyle\']))\n+\n+    # Spacer\n+    elements.append(Spacer(1, 48))\n+\n+    # Add submitter, affiliation\n+    submitter_paragraph_style = ParagraphStyle(name=\'SubmitterStyle\', fontName=\'Courier\', fontSize=10)\n+    elements.append(Paragraph(f"Submitter: {submitter}", submitter_paragraph_style))\n+    elements.append(Paragraph(f"Affiliation: {affiliation}", submitter_paragraph_style))\n+\n+    # Spacer\n+    elements.append(Spacer(1, 8))\n+\n+    # Add the date and time (CET) of the document creation\n+    cet = pytz.timezone("CET")\n+    current_datetime = datetime.now(cet)\n+    formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S %Z")\n+    elements.append(Paragraph(f"Date and time: {formatted_datetime}", submitter_paragraph_style))\n+\n+    # Build the PDF ###############################################################################\n+    pdf.build(elements)\n+\n+\n+if __name__ == "__main__":\n+    parser = argparse.ArgumentParser(description=\'Create an ERGA Assembly Report (EAR) from a YAML file. Visit https://github.com/ERGA-consortium/EARs for more information\')\n+    parser.add_argument(\'yaml_file\', type=str, help=\'Path to the YAML file\')\n+    args = parser.parse_args()\n+\n+    make_report(args.yaml_file)\n'
b
diff -r 000000000000 -r 8c99976de71e make_EAR.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/make_EAR.xml Fri Jun 07 14:23:49 2024 +0000
[
b'@@ -0,0 +1,319 @@\n+<tool id="make_ear" name="ERGA Assembly Reporting Tool (EAR)" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="@PROFILE@" license="MIT">\n+    <description>A tool to compile assembly reports and stastics from assembly pipeline</description>\n+    <macros>\n+        <import>macros.xml</import>\n+    </macros>\n+    <requirements>\n+        <requirement type="package" version="4.1.0">reportlab</requirement>\n+        <requirement type="package" version="24.4.0">pyaml</requirement>\n+        <requirement type="package" version="2024.1">pytz</requirement>\n+        <requirement type="package" version="2.32.3">requests</requirement>\n+    </requirements>\n+    <command detect_errors="exit_code"><![CDATA[\n+        python \'$__tool_directory__/make_EAR.py\' \'$param_file\' > \'$log\' \n+    ]]></command>\n+    <configfiles>\n+        <configfile name="param_file"><![CDATA[\n+# SAMPLE INFORMATION\n+ToLID: \'${sample_information.tolid}\'\n+Species: \'${sample_information.species_name}\'\n+Sex: \'${sample_information.species_sex}\'\n+Submitter: \'${sample_information.submitter}\'\n+Affiliation: \'${sample_information.affiliation}\'\n+Tags: \'${sample_information.tags}\'\n+\n+# SEQUENCING DATA\n+DATA: \n+    #for $repeat in $sequencing_data.seq_data_info:\n+    - ${repeat.seq_data}\n+    #end for\n+\n+# GENOME PROFILING DATA\n+PROFILING:\n+    GenomeScope:\n+        genomescope_summary_txt: \'${genome_profiling_data.genome_scope_summary}\'\n+    Smudgeplot:\n+        smudgeplot_verbose_summary_txt: \'${genome_profiling_data.smudge_plot_summary}\'\n+\n+#if $pre_curation_assembly_data.hap2_precuration_data.hap2_exists_precuration == "yes"\n+# ASSEMBLY DATA\n+ASSEMBLIES:\n+    Pre-curation:\n+        pipeline: [Hifiasm_v0.19.4|HiC|l0, Purge_Dups_v1.2.6|, Bionano_vGalaxy_3.7.0, YaHS_v1.1]\n+        \'${pre_curation_assembly_data.haplotype_selection}\': \n+            gfastats--nstar-report_txt: \'${pre_curation_assembly_data.gfstats_nstar_report_precuration}\'\n+            busco_short_summary_txt: \'${pre_curation_assembly_data.busco_short_summary_precuration}\'\n+            merqury_qv: \'${pre_curation_assembly_data.mercury_qv_precuration}\'\n+            merqury_completeness_stats: \'${pre_curation_assembly_data.merqury_completeness_stats_precuration}\'\n+        hap2: \n+            gfastats--nstar-report_txt: \'${pre_curation_assembly_data.hap2_precuration_data.gfstats_nstar_report_hap2_precuration}\'\n+            busco_short_summary_txt: \'${pre_curation_assembly_data.hap2_precuration_data.busco_short_summary_hap2_precuration}\'\n+            merqury_qv: \'${pre_curation_assembly_data.hap2_precuration_data.mercury_qv_hap2_precuration}\'\n+            merqury_completeness_stats: \'${pre_curation_assembly_data.hap2_precuration_data.merqury_completeness_stats_hap2_precuration}\'\n+\n+    Curated:\n+        pipeline: [GRIT_rapid_v2.0, HiGlass_v1.0]\n+        \'${pre_curation_assembly_data.haplotype_selection}\':\n+            gfastats--nstar-report_txt: \'${curated_assembly_data.gfstats_nstar_report_curated}\'\n+            busco_short_summary_txt: \'${curated_assembly_data.busco_short_summary_curated}\'\n+            merqury_qv: \'${curated_assembly_data.mercury_qv_curated}\'\n+            merqury_completeness_stats: \'${curated_assembly_data.merqury_completeness_stats_curated}\'\n+            merqury_hap_spectra_cn_png: \'${curated_assembly_data.merqury_hap_spectra_cn_curated}\'\n+            merqury_spectra_cn_png:  \'${curated_assembly_data.merqury_spectra_cn_curated}\'   \n+            merqury_spectra_asm_png: \'${curated_assembly_data.merqury_spectra_asm_curated}\'\n+            hic_FullMap_png: \'${curated_assembly_data.hic_FullMap_curated}\'\n+            hic_FullMap_link: \'${curated_assembly_data.hic_FullMap_link_curated}\'\n+            blobplot_cont_png: \'${curated_assembly_data.blobplot_cont_curated}\'\n+        hap2:\n+            gfastats--nstar-report_txt: \'${curated_assembly_data.hap2_curated_data.gfstats_nstar_report_hap2_curated}\'\n+            busco_short_summary_txt: \'${curated_assembly_data.hap2_curated_data.busco'..b'\n+                    <param name="hap2_exists_precuration" value="yes"/>\n+                    <param name="gfstats_nstar_report_hap2_precuration" value="ele_pre.asm2_gfastats.txt"/>\n+                    <param name="busco_short_summary_hap2_precuration" value="short_summary.specific.mammalia_odb10.pre.asm2.txt"/>\n+                    <param name="mercury_qv_hap2_precuration" value="ele_pre_merqOutput.qv"/>\n+                    <param name="merqury_completeness_stats_hap2_precuration" value="ele_pre_merqOutput.completeness.stats"/>\n+                </conditional>\n+            </section>\n+            <section name="curated_assembly_data">\n+                <param name="gfstats_nstar_report_curated" value="ele.asm1_post_gfastats.txt"/>\n+                <param name="busco_short_summary_curated" value="short_summary.specific.mammalia_odb10.post.asm1.txt"/>\n+                <param name="mercury_qv_curated" value="ele_post_merqOutput.qv"/>\n+                <param name="merqury_completeness_stats_curated" value="ele_post_merqOutput.completeness.stats"/>\n+                <param name="merqury_hap_spectra_cn_curated" value="ele_post_merqOutput.ele_post.asm1.spectra-cn.ln.png"/>\n+                <param name="merqury_spectra_cn_curated" value="ele_post_merqOutput.spectra-cn.ln.png"/>\n+                <param name="merqury_spectra_asm_curated" value="ele_post_merqOutput.spectra-asm.ln.png"/>\n+                <param name="hic_FullMap_curated" value="pretext_snake1.png"/>\n+                <param name="hic_FullMap_link_curated" value="https://box.fu-berlin.de/apps/files/something"/>\n+                <param name="blobplot_cont_curated" value="blob1.png"/>\n+                <conditional name="hap2_curated_data">\n+                    <param name="hap2_exists_curated" value="yes"/>\n+                    <param name="gfstats_nstar_report_hap2_curated" value="ele.asm2_post_gfastats.txt"/>\n+                    <param name="busco_short_summary_hap2_curated" value="short_summary.specific.mammalia_odb10.post.asm2.txt"/>\n+                    <param name="mercury_qv_hap2_curated" value="ele_post_merqOutput.qv"/>\n+                    <param name="merqury_completeness_stats_hap2_curated" value="ele_post_merqOutput.completeness.stats"/>\n+                    <param name="merqury_hap_spectra_cn_hap2_curated" value="ele_post_merqOutput.ele_post.asm2.spectra-cn.ln.png"/>\n+                    <param name="merqury_spectra_cn_hap2_curated" value="ele_post_merqOutput.spectra-cn.ln.png"/>\n+                    <param name="merqury_spectra_asm_hap2_curated" value="ele_post_merqOutput.spectra-asm.ln.png"/>\n+                    <param name="hic_FullMap_hap2_curated" value="pretext_snake2.png"/>\n+                    <param name="hic_FullMap_link_hap2_curated" value="https://box.fu-berlin.de/apps/files/something"/>\n+                    <param name="blobplot_cont_hap2_curated" value="blob2.png"/>\n+                </conditional>\n+            </section>\n+            <section name="curation_notes">\n+                <param name="obs_haploid_num" value="28"/>\n+                <param name="obs_sex" value="XX"/>\n+                <param name="interventions_per_gb" value="2"/>\n+                <param name="contam_notes" value="No presence of contaminants. Mitochondrial genome was removed from the assembly"/>\n+                <param name="other_notes" value="Large collapsed repeat in chr5, haplotypic inversion in chr12"/>\n+            </section>\n+            <output name="EAR_pdf" file="EAR.pdf" ftype="pdf" compare="sim_size"/>\n+            <output name="log" file="EAR_log"/>    \n+        </test>\n+    </tests>\n+    <help><![CDATA[\n+\n+.. class:: infomark\n+\n+**What it does**\n+\n+**ERGA Assembly Reporting Tool (EAR)** is a tool that compiles various statistics and reports generated from Assembly pipeline tools and compiles them in to a summarized PDF document for reporting.\n+    ]]></help>\n+    <expand macro="citations"/>\n+    <expand macro="creator"/>\n+</tool>\n\\ No newline at end of file\n'
b
diff -r 000000000000 -r 8c99976de71e test-data/EAR.pdf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/EAR.pdf Fri Jun 07 14:23:49 2024 +0000
[
b'@@ -0,0 +1,287 @@\n+%PDF-1.4\n+%\x93\x8c\x8b\x9e ReportLab Generated PDF document http://www.reportlab.com\n+1 0 obj\n+<<\n+/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 20 0 R\n+>>\n+endobj\n+2 0 obj\n+<<\n+/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font\n+>>\n+endobj\n+3 0 obj\n+<<\n+/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font\n+>>\n+endobj\n+4 0 obj\n+<<\n+/BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font\n+>>\n+endobj\n+5 0 obj\n+<<\n+/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<\n+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]\n+>> /Rotate 0 /Trans <<\n+\n+>> \n+  /Type /Page\n+>>\n+endobj\n+6 0 obj\n+<<\n+/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 24 0 R /Resources <<\n+/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]\n+>> /Rotate 0 /Trans <<\n+\n+>> \n+  /Type /Page\n+>>\n+endobj\n+7 0 obj\n+<<\n+/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 250 /Length 31200 /Subtype /Image \n+  /Type /XObject /Width 250\n+>>\n+stream\n+Gb",k#?[5B[eJ*2kI[YIF3[KT9O_Ig7SSK>`>3el1b\'Djmfc[d=/jVp(Spf^3t/e3AZ.s6b#!iL60UhfbkI_I7=qH?3/Z>^H.M#ni*PkYZhJChr7B-Kn%O\'TdB76if84fYd\'B6io[ckK..^_"q<)Y7+"eIL\'!kSX,WUO@h\'1>H@k#,HR=;fWfM%q$%,9]>s#>m?A=@pcMIS\'f-Rr+^n#gq$WeFd])SCn\\-8XPHN51)d2.LE_L_Tm!/7+!\\/qO^WXZ]&EX^"5Vo6m@^H0m[n0.mLgQ-IYf\\jNCZ)?HN09,o;gEam5UB.s3m.@g*XGF]s7bP7C,qU;)9o]JI=)?0b\\0:c&)ou4CRkl2bOrKULCS9\']t?$0Iudqc(5\\6]m0Q7jhYhI#$`XR\'P"p[Hg]R8lCD=soN]bNc7/rGb[>PL9?@CNsSp/$lJI&^LQ(YuPp&l\\:e`UpSSD;+;Y2\\nDpmVO+]DPDbkN9PqSCk;uZs/dL@#c-R\'66`9,d!E=3Vb]2&R-a]rps0@to5KleOCC*S+hIeUqDqP0:s72Mki*U#;TPgaCE3J!W:TanMI*V!:$dL+oant]C/m+u?(:=&7+U^1-Jqi.>Be;]ZQJl9o)nIG7)_#MC.Vp.UCEG!@+&rh&ZLs9\\l2I7)b4FIs@L/sGo8u[bHsUYc8_X?=o[5iin+o12^Db4OojMbWjLO^n]so&8=#NE9kRO/XCBT/A?KO4MO:tfXIn=DriNu,Sa/<G7`iZ>tcDDT`#$DtFCS\':%n@&7MkLB;qgl@kYmF@0JB97@"XE("Zi!oG?bkg:OWe$n1&R*qAnr?R&@t7H9KHJRgCH#La;EKt2mjVrm/SZ:`O/Xi(+B<VAnK)u\'*LDL8XLS#:CIeN7^:13(+cj45][\'8&W!Q#9`n0"1hXC)aVs;7_+M=ut3^S&S\'O;p`["!qmUd7ah3W:>Q40(NP#*PkZ+`lJ:D.Bq?X$aZFWrmL-\'E:phA,eN.l-kP?+(%kDkb?O=_Emc^r7>X.abA7_-+2em%F[C.Bro$N`^@,e*[%NH1^msF%99bE\\VDN[n,5F.-?$j/g:8;Y=\\Cj!;J:1Y(h@c^DQUQAm*>T!,0/l:].mYLi!75g3>\\5eglC9$7_S%f\'gqH9CE+sDk:Pt/<f0#sq(T"T([n)MTUc>%mi1YAQV:5A6E<Jh+KGV;E:m]G1f+,oFaK*Gn1$$\\,2(lpk0uQF2"BMXgS@<RK):h(UI_r+NPf>p4D1b&j!!D0B]kNHqaUHIG:S,bPuX,:X$aZFWrr$.`tMM`O+)IJGLc)VDe5Z/h+mlFPJ#-k:GS<r?Z7)gX1n=a-#%UriQDM\\H0P4?dJh$P_hC%_p?<lr/;7,[J3d3@l8fQ)p*lR1>f(0gW9loCIm3\\\\\'j;K1m##_8eZ)$eQmXi5<V0:5NY_4\'G_1+1qS$mTD\\BB^.j\'5V13K3T,0EesFU/gpFeG=@E;YggDkDrd/eE1(5r!>LB#7`(S@-@9Id80Y07#l\\G@AZ#9>g@a0nOS?qS$mTX#Q:7U)9!rD7@D458+Mn=UM8@!J@H`e>)\\3m8akt5Y,UW6MPStYVk/!X#.r=lj>DV(@0#k]B44$[3N@L$+6!&!"cO/eG"Bdh\'&#1bEqq[LFa3u#L4.UT6&BdALXuI":VRs;"mlDE)u;kS?$g+<RMXTL<mQmqQ5.h*20#5p3FN+2,79pFkr,3]g#o$qUZ/V5s%kjh`\'9F,1E=OrG)<82r\'>CBdBgj*P]L^MR!q"*<HFJ*N4<6S2mDmpqn]&c`c&O+lp+5.s7CPiZ@]]6h[l;Sofb3G2%t!f:9#AVUnTg5s%kjh`\'9f@k"hab_G!31[BhX_WnRsZ#2K!W(BH]$EXd=K<,R4c.\'0C<]T[F<MK^VK=2^rIb#nHCm;KL2#jXmR;u8ZF@_BW@S9rp5O-hOH_Z=gSYs3j)st?oR?cT%>0B`/eUULpb>#`$n_i,<ApGo61/O9\'X$aZFWrr#cMf\\bpDZ9)bbN4UI9B:MN2T]\'rT=ro;pQ07N)/#CA"N*F(/$\\@s"&I:h;r@>/G/\'Egl5n;9>gtNlh_Z<?n%VS3PRM.DZ7B6sOFshQ=rdYK=WOH1/,lhCG5D=qc2")_$cE.ul=FfjUM_g.h.p#4d]!?e5-1OrW5$>:[M#t=eG&p;*ESoA4eR"Xju!YG(#8O:\\:6$1G-*KAPpRA[.C;,=%\'hojpTrM];rZ/oZR2;Moi`UYbU4LG<\\JNb61trA\'Rm(a_j\'j+>#/9_lVaZ`95"1C<e>LdqS\'GGQa<$*J^;Ka;7\'D]W8Y3<3bDIgXaCQ";J:1Y(h@c^Ib0s:Qcbn\\Y8_j>(%n>Jgc!\'o[6!QqeWMlUB0aI0"u4PA#NI<1Z5\\N*RR`6IG,\'ebSYs3j/a[)g!,#kQ7bpo6]gq5,blV5D9<Q6TKS%ch,bciD<el2k<X7nRNr6pT\'`TEEZK?>_>4(tNjeM!3K^:J>gn^PpjB\\A/1_Ng>9;s#M2[,R%CS1UC@"NQnqS\'GG;sK)s@QV&][B(1d3M<<T5Hb!;IGQ%:S=bcr;3jPL6bjhF"*G(K]pki$k)%l!G!#[BEW<4r"4jHkDE"K9">di=/A7*L1Oqe7X+"_/HA8)`VnVUOm:0?Vb1JR`7H\\>mbD9q/Vf6%g+a_oYe,2*"fdKLeeKJ=^eUb<(rmjI5VrnDtnB$H9q,Q,d5Nu+Th^OL8mE):G9W7;NWu8jPLtp:((Bj,DLA$JoY]$WD<2ZgX/"Uhgo$,1bS\'@l[9;0lZ@$&oiqAlD\\r%`Vc.:<*]`ak>Q)78Ek@7>&?/A-a6MLB)`E]#AbZS^+;!$Gt<W@pR7Z^=n>O48;:G0"K$NbUOa>I_WtGHG0uX";dr7l!S8#O4mH-Nss?XOK$\':,ZOK6H!op,b:;`TDU>1r-Oaj<kHTLfSY-*'..b'dstream\n+endobj\n+27 0 obj\n+<<\n+/Filter [ /ASCII85Decode /FlateDecode ] /Length 361\n+>>\n+stream\n+Gau0=bAMqd&A7TLF%e)!]F+a]m/sb2<%3t@Q(f=Y"+@,4PgDet^;_F4+R0-0Z=MW0n\'(,L6.eVD2\\g;2&7boQW"Kg?&_$k@b5:gEpG68(1@_27V6-tPE\'X$]figG`>tCp:E\\UZU0(,*=\\$&jeogc&WMb7naQS;d+DMpCEG$@rAqtCuX)q9/2]!Q7O4K!i&#a3\'f3(`npP\\]L(`1WY<iB6f[;-t+P\\P!/KT.LmjF]1HS\\K<+c\\I;-;2Q=uE&Z$[`lcKJFRYV>Vf-BHZ,a?%fK:o`tWAbT\'iQgZD5%ZHo6S=KRar[(h4nJm5T@MrhiVr)fgoNPp^%r$0O04hIF,P>/E$cmN\',0]&_tsJ@c)sP~>endstream\n+endobj\n+28 0 obj\n+<<\n+/Filter [ /ASCII85Decode /FlateDecode ] /Length 557\n+>>\n+stream\n+GatU.9oi4-%(u=9pfNXKeoB]f\\K]Z6>ZQ.UDTFIQ8;O;8=q:IWdT<l!GKYl?ZBWPN*m]cs?n].)Gm!PJKUZ0RQ=+N:rSV,^!:RqXpQb^Udh>-+K1M0^d/dL&q=CW\\g=&#+0Q-_<!lALa*@@oGRn]G^pT<TVXKZQ\'J\'>L-"a%5SS*B7b="o)Snb%J)Y1H$IQVP2S+S\'53Qi,<t(--"X4:i0V,Rp?4NfE+1YSQI/-TOL`F&k6/gNiC13t97Zlr^qD-1YfM@eC?I"cQ%WhJODehg#9qnQbe3qKpQ6(L@p6l`TY?3Rf%f2)@6iitE.P<Jk5B9$\'\'K>ISc5lHm0Bl6QTq";g17e5rQUq<Vs35o@cj.LdDpWH!e8SuVfXGJ+;,2/!RVCsa-X*1Bj6R6qgZ/Y,SV?L_/3!dO_Xh(?(*<2(..%[LRa,paq7`2+coQo\\Os[>M>?=P<?,cGm1mPM3s09&nX!P>kN9r[mT*.4.hh/h(kb`RVj(>!g[ZZ0a+tgZOa67X3?X\\Dh%(d_hcZ(_*!p`DDH\'GS31T\\t&<H;R$!$M-qGG~>endstream\n+endobj\n+29 0 obj\n+<<\n+/Filter [ /ASCII85Decode /FlateDecode ] /Length 459\n+>>\n+stream\n+GarVJbAQ)X\']&X:c>m)7*lIcl2Jo?tFO<WcF:4K+\\?`Xd^hr6&MsY\'),S^RkS\\mT$(p^[(HKl)eBWs]V0TP8uQDZa3n+b<VQ\\7LXF,m9\'d^g3:I$$P*JZ@]6?\'9"->aNC6m&"l3UD]g8#L?Eg^52-)O:V)3Fu&]#TudL!p3+&nm>S<`m673=L$%E)l1(><62]>8N5;Lr5Cc`r\'kLE`k)-H<"W&-DeKr*0,J!=lWO-5JTu<qW,#c$c7@VoADMq+%D9Yhui%r&j_@GZl6Ee8tEXBKLhB/Mj[=Xa>YWL$bV/+5MTFK`9@9.+sQj*oE^!hW(ONtdNjBu/i/%iF:`bL.BfIi]_0TkgjmP\\1rDrYA@+Dq#(iU6"Z9TCH?$h%ta,&a.-D/Y#R,"prR`OF\\/lC8hWr0dO,:lkdTpL[CBoi^iD[Z,+TX*OZS\\;f!NaJ[mmDgi5=?_5-8+T~>endstream\n+endobj\n+30 0 obj\n+<<\n+/Filter [ /ASCII85Decode /FlateDecode ] /Length 379\n+>>\n+stream\n+Gaqc24)_ti(u4^5DPS!SZ1@t![&"dF.V7i/(J-)(%X-:;^TS;!/NV(<IJ;QgCk<p_be%\\BD2Hf\'J5DI8O=\\[RmdX1Ea,!uciKC9@RY%CnAjoUN\\No=H&MqQ^Wk1Wk=$,a%%kD*XMHmAQ/m0ARVO5LaFJJE7aOQ"bKZ:?Xh?3c:1((mUImKbO\\Ws#qb\'%[7&%to\'AEo`0E"s-GmqM]Mnh[NBatBn=KeOFYYleOsUsU7=Bm@aZ<Y/ngI2mAW22pt\'TjFJ&^)7jD?"dre[,[DUn\'p]15%=\'YK\\kD=\\k0B$W1YqiFI/DHT58/pF,[TJ&%6Mkp$fBf`aB$h^qJ@%0^!64buP"UCW&3C+tUuM%=W&>r$r*21VF[#+)[d&9`~>endstream\n+endobj\n+31 0 obj\n+<<\n+/Filter [ /ASCII85Decode /FlateDecode ] /Length 819\n+>>\n+stream\n+Gau`R9lo#B&A@Zcp.-ul,0<<?\\Ift29W)TVHg$;`)FKedK,SEeRJuuaAK)\'1Zsi6C$s9k5o_,Do>/YsN_p%T4&E(]`bA.<@K/X$I\'-"T.0_/E)=tE1t*$"2S.:%cdcp<X9=gW-#gX:3iGTh*Ii7)`9Pc6fFCB_m,T\'O1A"5X]9(Ff;\'55QLV[1,uV0au;Y7tSY$)Mh%u;K=aEUT+U_f`Hh""E\\UEpb9J8\':k$)\'BXSOV,TFn7Bfm_NDX%\\>s^PWUsDmOIBBPIN/8S.Q&[((`AL1V&m6>q_ak<<E<=?F[g2GI5>_g\'7\\*1s%^bJA9gjnK`!jS!6*^d[mQo81]#!i6^9I@l(?r\\s@duhD4CuQA!)mC(>9ht1d2f0)=3TgXer%AhC3DR*S&#la=Ls\'_4WEc.%aXCG;=:qU/k."rQ,T-%*:)CTcsNpQn0*%-V-a"LN_Z/N@CpXpCptsh]NJ@fQk[Qc,+:PO$4<?NmXU.?H#;XqXPUKgX"ZIK1K%NG$sW],3@gK`JdEs5G<jU]8si7f@m5\\>X,lSC&euHD:\\$=4QY?Q5@m+/#&"@+gc\\@qNWi6/3KG2a$@dj2l&hA1(#-o/J5Wum+/E.6;n!!XE-I_,NM`$ku9ma)JX)/BDcLK$e2:s0hNHO_\\*QmNP:"&=XG:::7gRuR\\DnT;JQMRkc/`cr,-7=*ZW)\\IeUrf-AC;Q^Q28S,+s)IV(.Ts;3VjiH<YLf-egr*PD(rdrhP"Tt1T`,pLWS3km?J_noo^QHCVu"u5]#;-7nC$QRMB63.6beC(PhR3.n:Of7*d;ss"bY4P44"/5?[0G^(]~>endstream\n+endobj\n+xref\n+0 32\n+0000000000 65535 f \n+0000000073 00000 n \n+0000000135 00000 n \n+0000000242 00000 n \n+0000000347 00000 n \n+0000000457 00000 n \n+0000000662 00000 n \n+0000000867 00000 n \n+0000032259 00000 n \n+0000032445 00000 n \n+0000032631 00000 n \n+0000032924 00000 n \n+0000073699 00000 n \n+0000114839 00000 n \n+0000156687 00000 n \n+0000200097 00000 n \n+0000200514 00000 n \n+0000370008 00000 n \n+0000370994 00000 n \n+0000371264 00000 n \n+0000371534 00000 n \n+0000371648 00000 n \n+0000371854 00000 n \n+0000371924 00000 n \n+0000372208 00000 n \n+0000372309 00000 n \n+0000373907 00000 n \n+0000375591 00000 n \n+0000376043 00000 n \n+0000376691 00000 n \n+0000377241 00000 n \n+0000377711 00000 n \n+trailer\n+<<\n+/ID \n+[<e46aade081acc4d04c2667ebe29b075a><e46aade081acc4d04c2667ebe29b075a>]\n+% ReportLab generated PDF document -- digest (http://www.reportlab.com)\n+\n+/Info 23 0 R\n+/Root 22 0 R\n+/Size 32\n+>>\n+startxref\n+378621\n+%%EOF\n'
b
diff -r 000000000000 -r 8c99976de71e test-data/blob1.png
b
Binary file test-data/blob1.png has changed
b
diff -r 000000000000 -r 8c99976de71e test-data/blob2.png
b
Binary file test-data/blob2.png has changed
b
diff -r 000000000000 -r 8c99976de71e test-data/ele.asm1_post_gfastats.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ele.asm1_post_gfastats.txt Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,140 @@
++++Assembly summary+++: 
+Expected genome size: 3013249396
+# scaffolds: 104
+Total scaffold length: 3343225297
+Average scaffold length: 32146397.09
+Scaffold N50: 125437426
+Scaffold auN: 138197339.10
+Scaffold L50: 10
+Scaffold NG50: 134090202
+Scaffold auNG: 153331098.53
+Scaffold LG50: 8
+Largest scaffold: 243324329
+Smallest scaffold: 1
+# contigs: 178
+Total contig length: 3343086611
+Average contig length: 18781385.46
+Contig N50: 77716104
+Contig auN: 88503007.28
+Contig L50: 14
+Contig NG50: 82586413
+Contig auNG: 98190750.18
+Contig LG50: 12
+Largest contig: 204998129
+Smallest contig: 1
+# gaps in scaffolds: 74
+Total gap length in scaffolds: 138686
+Average gap length in scaffolds: 1874.14
+Gap N50 in scaffolds: 20675
+Gap auN in scaffolds: 21797.93
+Gap L50 in scaffolds: 3
+Largest gap in scaffolds: 35997
+Smallest gap in scaffolds: 13
+Base composition (A:C:G:T): 984620926:687490164:686059446:984916075
+GC content %: 41.09
+# soft-masked bases: 0
+# segments: 178
+Total segment length: 3343086611
+Average segment length: 18781385.46
+# gaps: 74
+# paths: 104
+Scaffold N10: 236160408
+Scaffold N20: 219377424
+Scaffold N30: 180681480
+Scaffold N40: 141551058
+Scaffold N50: 125437426
+Scaffold N60: 109107485
+Scaffold N70: 87052876
+Scaffold N80: 82406000
+Scaffold N90: 73275821
+Scaffold N100: 1
+Scaffold L10: 2
+Scaffold L20: 3
+Scaffold L30: 5
+Scaffold L40: 7
+Scaffold L50: 10
+Scaffold L60: 13
+Scaffold L70: 16
+Scaffold L80: 20
+Scaffold L90: 24
+Scaffold L100: 104
+Scaffold NG10: 236160408
+Scaffold NG20: 219377424
+Scaffold NG30: 180681480
+Scaffold NG40: 164477691
+Scaffold NG50: 134090202
+Scaffold NG60: 117534258
+Scaffold NG70: 96585471
+Scaffold NG80: 86756607
+Scaffold NG90: 82406000
+Scaffold NG100: 73275821
+Scaffold LG10: 2
+Scaffold LG20: 3
+Scaffold LG30: 5
+Scaffold LG40: 6
+Scaffold LG50: 8
+Scaffold LG60: 11
+Scaffold LG70: 14
+Scaffold LG80: 17
+Scaffold LG90: 20
+Scaffold LG100: 24
+Contig N10: 177989186
+Contig N20: 141551058
+Contig N30: 119595178
+Contig N40: 88304850
+Contig N50: 77716104
+Contig N60: 64897926
+Contig N70: 50766403
+Contig N80: 38082545
+Contig N90: 19324751
+Contig N100: 1
+Contig L10: 2
+Contig L20: 4
+Contig L30: 7
+Contig L40: 10
+Contig L50: 14
+Contig L60: 19
+Contig L70: 25
+Contig L80: 32
+Contig L90: 43
+Contig L100: 178
+Contig NG10: 177989186
+Contig NG20: 141551058
+Contig NG30: 120144288
+Contig NG40: 89132339
+Contig NG50: 82586413
+Contig NG60: 73275821
+Contig NG70: 63623994
+Contig NG80: 49644639
+Contig NG90: 36506007
+Contig NG100: 19324751
+Contig LG10: 2
+Contig LG20: 4
+Contig LG30: 6
+Contig LG40: 9
+Contig LG50: 12
+Contig LG60: 16
+Contig LG70: 21
+Contig LG80: 26
+Contig LG90: 33
+Contig LG100: 43
+Gap N10: 35997
+Gap N20: 35997
+Gap N30: 26979
+Gap N40: 26979
+Gap N50: 20675
+Gap N60: 20675
+Gap N70: 17285
+Gap N80: 14311
+Gap N90: 2591
+Gap N100: 13
+Gap L10: 1
+Gap L20: 1
+Gap L30: 2
+Gap L40: 2
+Gap L50: 3
+Gap L60: 3
+Gap L70: 4
+Gap L80: 5
+Gap L90: 7
+Gap L100: 74
b
diff -r 000000000000 -r 8c99976de71e test-data/ele.asm2_post_gfastats.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ele.asm2_post_gfastats.txt Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,140 @@
++++Assembly summary+++: 
+Expected genome size: 3013249396
+# scaffolds: 91
+Total scaffold length: 3140900549
+Average scaffold length: 34515390.65
+Scaffold N50: 125802197
+Scaffold auN: 135350345.03
+Scaffold L50: 9
+Scaffold NG50: 125802197
+Scaffold auNG: 141084230.72
+Scaffold LG50: 9
+Largest scaffold: 242540316
+Smallest scaffold: 1
+# contigs: 153
+Total contig length: 3140360856
+Average contig length: 20525234.35
+Contig N50: 88213608
+Contig auN: 101703874.24
+Contig L50: 11
+Contig NG50: 88213608
+Contig auNG: 105994168.95
+Contig LG50: 11
+Largest contig: 234471621
+Smallest contig: 1
+# gaps in scaffolds: 62
+Total gap length in scaffolds: 539693
+Average gap length in scaffolds: 8704.73
+Gap N50 in scaffolds: 323721
+Gap auN in scaffolds: 239707.53
+Gap L50 in scaffolds: 1
+Largest gap in scaffolds: 323721
+Smallest gap in scaffolds: 13
+Base composition (A:C:G:T): 925961494:647141117:642449847:924808398
+GC content %: 41.07
+# soft-masked bases: 0
+# segments: 153
+Total segment length: 3140360856
+Average segment length: 20525234.35
+# gaps: 62
+# paths: 91
+Scaffold N10: 234471621
+Scaffold N20: 209675643
+Scaffold N30: 168942159
+Scaffold N40: 134135692
+Scaffold N50: 125802197
+Scaffold N60: 104898581
+Scaffold N70: 85267550
+Scaffold N80: 82719204
+Scaffold N90: 78370265
+Scaffold N100: 1
+Scaffold L10: 2
+Scaffold L20: 3
+Scaffold L30: 5
+Scaffold L40: 7
+Scaffold L50: 9
+Scaffold L60: 12
+Scaffold L70: 16
+Scaffold L80: 19
+Scaffold L90: 23
+Scaffold L100: 91
+Scaffold NG10: 234471621
+Scaffold NG20: 209675643
+Scaffold NG30: 168942159
+Scaffold NG40: 134135692
+Scaffold NG50: 125802197
+Scaffold NG60: 110010710
+Scaffold NG70: 88213608
+Scaffold NG80: 82835581
+Scaffold NG90: 80300231
+Scaffold NG100: 49409000
+Scaffold LG10: 2
+Scaffold LG20: 3
+Scaffold LG30: 5
+Scaffold LG40: 7
+Scaffold LG50: 9
+Scaffold LG60: 11
+Scaffold LG70: 15
+Scaffold LG80: 18
+Scaffold LG90: 22
+Scaffold LG100: 26
+Contig N10: 204044015
+Contig N20: 160573602
+Contig N30: 122210704
+Contig N40: 116290662
+Contig N50: 88213608
+Contig N60: 76459109
+Contig N70: 52689000
+Contig N80: 36940240
+Contig N90: 33595625
+Contig N100: 1
+Contig L10: 2
+Contig L20: 4
+Contig L30: 6
+Contig L40: 8
+Contig L50: 11
+Contig L60: 15
+Contig L70: 20
+Contig L80: 27
+Contig L90: 36
+Contig L100: 153
+Contig NG10: 204044015
+Contig NG20: 164853315
+Contig NG30: 122210704
+Contig NG40: 116290662
+Contig NG50: 88213608
+Contig NG60: 77872504
+Contig NG70: 58969899
+Contig NG80: 40048101
+Contig NG90: 34729504
+Contig NG100: 6573539
+Contig LG10: 2
+Contig LG20: 3
+Contig LG30: 6
+Contig LG40: 8
+Contig LG50: 11
+Contig LG60: 14
+Contig LG70: 19
+Contig LG80: 25
+Contig LG90: 33
+Contig LG100: 49
+Gap N10: 323721
+Gap N20: 323721
+Gap N30: 323721
+Gap N40: 323721
+Gap N50: 323721
+Gap N60: 152291
+Gap N70: 152291
+Gap N80: 152291
+Gap N90: 34316
+Gap N100: 13
+Gap L10: 1
+Gap L20: 1
+Gap L30: 1
+Gap L40: 1
+Gap L50: 1
+Gap L60: 2
+Gap L70: 2
+Gap L80: 2
+Gap L90: 3
+Gap L100: 62
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_post_merqOutput.completeness.stats
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ele_post_merqOutput.completeness.stats Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,3 @@
+ele_post.asm1 all 2624854433 2761453148 9
+ele_post.asm2 all 2509491792 2761453148 90.8758
+both all 2743141406 2761453148 99.3369
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_post_merqOutput.ele_post.asm1.spectra-cn.ln.png
b
Binary file test-data/ele_post_merqOutput.ele_post.asm1.spectra-cn.ln.png has changed
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_post_merqOutput.ele_post.asm2.spectra-cn.ln.png
b
Binary file test-data/ele_post_merqOutput.ele_post.asm2.spectra-cn.ln.png has changed
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_post_merqOutput.qv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ele_post_merqOutput.qv Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,3 @@
+ele_post.asm1 12485 3343081387 6 1.2047e-07
+ele_post.asm2 11215 3140356295 69.3854 1.15202e-07
+Both 23700 6483437682 69.2842 1.17919e-07
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_post_merqOutput.spectra-asm.ln.png
b
Binary file test-data/ele_post_merqOutput.spectra-asm.ln.png has changed
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_post_merqOutput.spectra-cn.ln.png
b
Binary file test-data/ele_post_merqOutput.spectra-cn.ln.png has changed
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_pre.asm1_gfastats.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ele_pre.asm1_gfastats.txt Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,140 @@
++++Assembly summary+++: 
+Expected genome size: 3013249396
+# scaffolds: 973
+Total scaffold length: 3660021265
+Average scaffold length: 3761584.03
+Scaffold N50: 111683922
+Scaffold auN: 121433811.93
+Scaffold L50: 12
+Scaffold NG50: 124780000
+Scaffold auNG: 147498688.47
+Scaffold LG50: 9
+Largest scaffold: 243324329
+Smallest scaffold: 11938
+# contigs: 1101
+Total contig length: 3658146742
+Average contig length: 3322567.43
+Contig N50: 73275821
+Contig auN: 80985913.84
+Contig L50: 16
+Contig NG50: 82586413
+Contig auNG: 98318565.08
+Contig LG50: 12
+Largest contig: 204998129
+Smallest contig: 140
+# gaps in scaffolds: 128
+Total gap length in scaffolds: 1874523
+Average gap length in scaffolds: 14644.71
+Gap N50 in scaffolds: 1310475
+Gap auN in scaffolds: 947429.23
+Gap L50 in scaffolds: 1
+Largest gap in scaffolds: 1310475
+Smallest gap in scaffolds: 13
+Base composition (A:C:G:T): 1064699494:760497093:762136425:1070813730
+GC content %: 41.62
+# soft-masked bases: 0
+# segments: 1101
+Total segment length: 3658146742
+Average segment length: 3322567.43
+# gaps: 128
+# paths: 973
+Scaffold N10: 236160408
+Scaffold N20: 194728383
+Scaffold N30: 141551058
+Scaffold N40: 124780000
+Scaffold N50: 111683922
+Scaffold N60: 92969958
+Scaffold N70: 82406000
+Scaffold N80: 76754748
+Scaffold N90: 6554085
+Scaffold N100: 11938
+Scaffold L10: 2
+Scaffold L20: 4
+Scaffold L30: 6
+Scaffold L40: 9
+Scaffold L50: 12
+Scaffold L60: 15
+Scaffold L70: 19
+Scaffold L80: 24
+Scaffold L90: 35
+Scaffold L100: 973
+Scaffold NG10: 236160408
+Scaffold NG20: 209662331
+Scaffold NG30: 164562945
+Scaffold NG40: 134694077
+Scaffold NG50: 124780000
+Scaffold NG60: 117534258
+Scaffold NG70: 97684049
+Scaffold NG80: 84211173
+Scaffold NG90: 80601974
+Scaffold NG100: 69902989
+Scaffold LG10: 2
+Scaffold LG20: 3
+Scaffold LG30: 5
+Scaffold LG40: 7
+Scaffold LG50: 9
+Scaffold LG60: 11
+Scaffold LG70: 14
+Scaffold LG80: 18
+Scaffold LG90: 21
+Scaffold LG100: 25
+Contig N10: 177989186
+Contig N20: 134382063
+Contig N30: 117534258
+Contig N40: 82586413
+Contig N50: 73275821
+Contig N60: 54864116
+Contig N70: 48431110
+Contig N80: 26563858
+Contig N90: 2992004
+Contig N100: 140
+Contig L10: 2
+Contig L20: 5
+Contig L30: 8
+Contig L40: 12
+Contig L50: 16
+Contig L60: 22
+Contig L70: 29
+Contig L80: 39
+Contig L90: 85
+Contig L100: 1101
+Contig NG10: 177989186
+Contig NG20: 141551058
+Contig NG30: 120144288
+Contig NG40: 89132339
+Contig NG50: 82586413
+Contig NG60: 73275821
+Contig NG70: 63623994
+Contig NG80: 49644639
+Contig NG90: 36506007
+Contig NG100: 19324751
+Contig LG10: 2
+Contig LG20: 4
+Contig LG30: 6
+Contig LG40: 9
+Contig LG50: 12
+Contig LG60: 16
+Contig LG70: 21
+Contig LG80: 26
+Contig LG90: 33
+Contig LG100: 43
+Gap N10: 1310475
+Gap N20: 1310475
+Gap N30: 1310475
+Gap N40: 1310475
+Gap N50: 1310475
+Gap N60: 1310475
+Gap N70: 185666
+Gap N80: 121398
+Gap N90: 72844
+Gap N100: 13
+Gap L10: 1
+Gap L20: 1
+Gap L30: 1
+Gap L40: 1
+Gap L50: 1
+Gap L60: 1
+Gap L70: 2
+Gap L80: 3
+Gap L90: 4
+Gap L100: 128
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_pre.asm2_gfastats.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ele_pre.asm2_gfastats.txt Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,140 @@
++++Assembly summary+++: 
+Expected genome size: 3013249396
+# scaffolds: 555
+Total scaffold length: 3238925270
+Average scaffold length: 5835901.39
+Scaffold N50: 116290662
+Scaffold auN: 129007713.10
+Scaffold L50: 10
+Scaffold NG50: 125802197
+Scaffold auNG: 138669684.14
+Scaffold LG50: 9
+Largest scaffold: 240286497
+Smallest scaffold: 5000
+# contigs: 632
+Total contig length: 3235415746
+Average contig length: 5119328.71
+Contig N50: 88190939
+Contig auN: 98728369.04
+Contig L50: 12
+Contig NG50: 88213608
+Contig auNG: 106007594.40
+Contig LG50: 11
+Largest contig: 234471621
+Smallest contig: 1506
+# gaps in scaffolds: 77
+Total gap length in scaffolds: 3509524
+Average gap length in scaffolds: 45578.23
+Gap N50 in scaffolds: 1893595
+Gap auN in scaffolds: 1109381.96
+Gap L50 in scaffolds: 1
+Largest gap in scaffolds: 1893595
+Smallest gap in scaffolds: 13
+Base composition (A:C:G:T): 950023619:669435937:665265498:950690692
+GC content %: 41.25
+# soft-masked bases: 0
+# segments: 632
+Total segment length: 3235415746
+Average segment length: 5119328.71
+# gaps: 77
+# paths: 555
+Scaffold N10: 234471621
+Scaffold N20: 209119963
+Scaffold N30: 164853315
+Scaffold N40: 134179787
+Scaffold N50: 116290662
+Scaffold N60: 93312721
+Scaffold N70: 84883371
+Scaffold N80: 80300231
+Scaffold N90: 65267526
+Scaffold N100: 5000
+Scaffold L10: 2
+Scaffold L20: 3
+Scaffold L30: 5
+Scaffold L40: 7
+Scaffold L50: 10
+Scaffold L60: 13
+Scaffold L70: 17
+Scaffold L80: 21
+Scaffold L90: 25
+Scaffold L100: 555
+Scaffold NG10: 234471621
+Scaffold NG20: 209119963
+Scaffold NG30: 164853315
+Scaffold NG40: 134179787
+Scaffold NG50: 125802197
+Scaffold NG60: 96796698
+Scaffold NG70: 85267550
+Scaffold NG80: 82835581
+Scaffold NG90: 79589986
+Scaffold NG100: 37243292
+Scaffold LG10: 2
+Scaffold LG20: 3
+Scaffold LG30: 5
+Scaffold LG40: 7
+Scaffold LG50: 9
+Scaffold LG60: 12
+Scaffold LG70: 15
+Scaffold LG80: 18
+Scaffold LG90: 22
+Scaffold LG100: 27
+Contig N10: 204044015
+Contig N20: 160573602
+Contig N30: 122210704
+Contig N40: 116110962
+Contig N50: 88190939
+Contig N60: 72901558
+Contig N70: 47659775
+Contig N80: 35818318
+Contig N90: 20408791
+Contig N100: 1506
+Contig L10: 2
+Contig L20: 4
+Contig L30: 6
+Contig L40: 9
+Contig L50: 12
+Contig L60: 16
+Contig L70: 21
+Contig L80: 30
+Contig L90: 40
+Contig L100: 632
+Contig NG10: 204044015
+Contig NG20: 164853315
+Contig NG30: 122210704
+Contig NG40: 116290662
+Contig NG50: 88213608
+Contig NG60: 77872504
+Contig NG70: 58969899
+Contig NG80: 40048101
+Contig NG90: 34729504
+Contig NG100: 6573539
+Contig LG10: 2
+Contig LG20: 3
+Contig LG30: 6
+Contig LG40: 8
+Contig LG50: 11
+Contig LG60: 14
+Contig LG70: 19
+Contig LG80: 25
+Contig LG90: 33
+Contig LG100: 49
+Gap N10: 1893595
+Gap N20: 1893595
+Gap N30: 1893595
+Gap N40: 1893595
+Gap N50: 1893595
+Gap N60: 323721
+Gap N70: 312502
+Gap N80: 146315
+Gap N90: 99478
+Gap N100: 13
+Gap L10: 1
+Gap L20: 1
+Gap L30: 1
+Gap L40: 1
+Gap L50: 1
+Gap L60: 2
+Gap L70: 3
+Gap L80: 5
+Gap L90: 8
+Gap L100: 77
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_pre_merqOutput.completeness.stats
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ele_pre_merqOutput.completeness.stats Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,3 @@
+ele_pre.asm1 all 2638885094 2761453148 95.5615
+ele_pre.asm2 all 2507407539 2761453148 90.8003
+both all 2748222334 2761453148 99.5209
b
diff -r 000000000000 -r 8c99976de71e test-data/ele_pre_merqOutput.qv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/ele_pre_merqOutput.qv Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,3 @@
+ele_pre.asm1 17688 3658113712 68.0694 1.55977e-07
+ele_pre.asm2 14251 3235396786 68.4744 1.42088e-07
+Both 31939 6893510498 68.2548 1.49458e-07
b
diff -r 000000000000 -r 8c99976de71e test-data/genomescope_results_summary.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/genomescope_results_summary.txt Fri Jun 07 14:23:49 2024 +0000
b
@@ -0,0 +1,15 @@
+GenomeScope version 2.0
+input file = /scratch/ddepanis/Elephant_project/mEleMax1.2/curated/1_evaluation/kmer_profiling/HiFi_trimmed.meryl/merylDB_10000.hist
+output directory = /scratch/ddepanis/Elephant_project/mEleMax1.2/curated/1_evaluation/kmer_profiling/HiFi_trimmed.meryl/genomescope/
+p = 2
+k = 31
+name prefix = results
+
+property                      min               max               
+Homozygous (aa)               99.739%           99.7476%          
+Heterozygous (ab)             0.252443%         0.260993%         
+Genome Haploid Length         3,011,504,214 bp  3,013,249,396 bp  
+Genome Repeat Length          551,610,389 bp    551,930,050 bp    
+Genome Unique Length          2,459,893,825 bp  2,461,319,346 bp  
+Model Fit                     83.6025%          98.1859%          
+Read Error Rate               0.16852%          0.16852%          
b
diff -r 000000000000 -r 8c99976de71e test-data/pretext_snake1.png
b
Binary file test-data/pretext_snake1.png has changed
b
diff -r 000000000000 -r 8c99976de71e test-data/pretext_snake2.png
b
Binary file test-data/pretext_snake2.png has changed
b
diff -r 000000000000 -r 8c99976de71e test-data/short_summary.specific.mammalia_odb10.post.asm1.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/short_summary.specific.mammalia_odb10.post.asm1.txt Fri Jun 07 14:23:49 2024 +0000
[
@@ -0,0 +1,30 @@
+# BUSCO version is: 5.4.7 
+# The lineage dataset is: mammalia_odb10 (Creation date: 2021-02-19, number of genomes: 24, number of BUSCOs: 9226)
+# Summarized benchmarking in BUSCO notation for file /scratch/ddepanis/Elephant_project/mEleMax1.2/curated/1_evaluation/ele_post/ASSEMBLY_FASTAS/ele_post.asm1.fasta
+# BUSCO was run in mode: euk_genome_met
+# Gene predictor used: metaeuk
+
+ ***** Results: *****
+
+ C:95.9%[S:95.2%,D:0.7%],F:1.1%,M:3.0%,n:9226    
+ 8855 Complete BUSCOs (C)    
+ 8787 Complete and single-copy BUSCOs (S)    
+ 68 Complete and duplicated BUSCOs (D)    
+ 100 Fragmented BUSCOs (F)    
+ 271 Missing BUSCOs (M)    
+ 9226 Total BUSCO groups searched    
+
+Assembly Statistics:
+ 104 Number of scaffolds
+ 178 Number of contigs
+ 3343225297 Total length
+ 0.004% Percent gaps
+ 125 MB Scaffold N50
+ 77 MB Contigs N50
+
+
+Dependencies and versions:
+ hmmsearch: 3.1
+ bbtools: 39.01
+ metaeuk: 6.a5d39d9
+ busco: 5.4.7
b
diff -r 000000000000 -r 8c99976de71e test-data/short_summary.specific.mammalia_odb10.post.asm2.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/short_summary.specific.mammalia_odb10.post.asm2.txt Fri Jun 07 14:23:49 2024 +0000
[
@@ -0,0 +1,30 @@
+# BUSCO version is: 5.4.7 
+# The lineage dataset is: mammalia_odb10 (Creation date: 2021-02-19, number of genomes: 24, number of BUSCOs: 9226)
+# Summarized benchmarking in BUSCO notation for file /scratch/ddepanis/Elephant_project/mEleMax1.2/curated/1_evaluation/ele_post/ASSEMBLY_FASTAS/ele_post.asm2.fasta
+# BUSCO was run in mode: euk_genome_met
+# Gene predictor used: metaeuk
+
+ ***** Results: *****
+
+ C:93.6%[S:92.8%,D:0.8%],F:1.1%,M:5.3%,n:9226    
+ 8639 Complete BUSCOs (C)    
+ 8566 Complete and single-copy BUSCOs (S)    
+ 73 Complete and duplicated BUSCOs (D)    
+ 104 Fragmented BUSCOs (F)    
+ 483 Missing BUSCOs (M)    
+ 9226 Total BUSCO groups searched    
+
+Assembly Statistics:
+ 91 Number of scaffolds
+ 153 Number of contigs
+ 3140900549 Total length
+ 0.017% Percent gaps
+ 125 MB Scaffold N50
+ 88 MB Contigs N50
+
+
+Dependencies and versions:
+ hmmsearch: 3.1
+ bbtools: 39.01
+ metaeuk: 6.a5d39d9
+ busco: 5.4.7
b
diff -r 000000000000 -r 8c99976de71e test-data/short_summary.specific.mammalia_odb10.pre.asm1.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/short_summary.specific.mammalia_odb10.pre.asm1.txt Fri Jun 07 14:23:49 2024 +0000
[
@@ -0,0 +1,30 @@
+# BUSCO version is: 5.4.7 
+# The lineage dataset is: mammalia_odb10 (Creation date: 2021-02-19, number of genomes: 24, number of BUSCOs: 9226)
+# Summarized benchmarking in BUSCO notation for file /scratch/ddepanis/Elephant_project/mEleMax1.2/curated/1_evaluation/ele_pre/ASSEMBLY_FASTAS/ele_pre.asm1.fasta
+# BUSCO was run in mode: euk_genome_met
+# Gene predictor used: metaeuk
+
+ ***** Results: *****
+
+ C:96.0%[S:95.3%,D:0.7%],F:1.1%,M:2.9%,n:9226    
+ 8855 Complete BUSCOs (C)    
+ 8788 Complete and single-copy BUSCOs (S)    
+ 67 Complete and duplicated BUSCOs (D)    
+ 101 Fragmented BUSCOs (F)    
+ 270 Missing BUSCOs (M)    
+ 9226 Total BUSCO groups searched    
+
+Assembly Statistics:
+ 973 Number of scaffolds
+ 1101 Number of contigs
+ 3660021265 Total length
+ 0.051% Percent gaps
+ 111 MB Scaffold N50
+ 73 MB Contigs N50
+
+
+Dependencies and versions:
+ hmmsearch: 3.1
+ bbtools: 39.01
+ metaeuk: 6.a5d39d9
+ busco: 5.4.7
b
diff -r 000000000000 -r 8c99976de71e test-data/short_summary.specific.mammalia_odb10.pre.asm2.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/short_summary.specific.mammalia_odb10.pre.asm2.txt Fri Jun 07 14:23:49 2024 +0000
[
@@ -0,0 +1,30 @@
+# BUSCO version is: 5.4.7 
+# The lineage dataset is: mammalia_odb10 (Creation date: 2021-02-19, number of genomes: 24, number of BUSCOs: 9226)
+# Summarized benchmarking in BUSCO notation for file /scratch/ddepanis/Elephant_project/mEleMax1.2/curated/1_evaluation/ele_pre/ASSEMBLY_FASTAS/ele_pre.asm2.fasta
+# BUSCO was run in mode: euk_genome_met
+# Gene predictor used: metaeuk
+
+ ***** Results: *****
+
+ C:93.7%[S:92.9%,D:0.8%],F:1.1%,M:5.2%,n:9226    
+ 8641 Complete BUSCOs (C)    
+ 8570 Complete and single-copy BUSCOs (S)    
+ 71 Complete and duplicated BUSCOs (D)    
+ 105 Fragmented BUSCOs (F)    
+ 480 Missing BUSCOs (M)    
+ 9226 Total BUSCO groups searched    
+
+Assembly Statistics:
+ 555 Number of scaffolds
+ 632 Number of contigs
+ 3238925270 Total length
+ 0.108% Percent gaps
+ 116 MB Scaffold N50
+ 88 MB Contigs N50
+
+
+Dependencies and versions:
+ hmmsearch: 3.1
+ bbtools: 39.01
+ metaeuk: 6.a5d39d9
+ busco: 5.4.7
b
diff -r 000000000000 -r 8c99976de71e test-data/smudgeplot_verbose_summary.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/smudgeplot_verbose_summary.txt Fri Jun 07 14:23:49 2024 +0000
[
@@ -0,0 +1,22 @@
+1n coverage estimates (Coverage of every haplotype; Don't confuse with genome coverage which is (ploidy * 1n coverage).)
+* User defined 1n coverage:
+* Subset 1n coverage estimate: 41.7
+* Highest peak 1n coverage estimate: 35.2
+1n coverage used in smudgeplot (one of the three above): 41.7
+* Proposed ploidy: 2
+* Minimal number of heterozygous loci: 23132
+Note: This number is NOT an estimate of the total number heterozygous loci, it's merly setting the lower boundary if the inference of heterozygosity peaks is correct.
+* Proportion of heterozygosity carried by pairs in different genome copies (table)
+  genome_copies propotion_of_heterozygosity
+1             2                        0.53
+2             3                        0.00
+3             4                        0.22
+4             5                        0.11
+5             6                        0.14
+* Proportion of heterozygosity carried by paralogs: 0.473
+* Summary of all detected peaks (table)
+    peak kmers [#] kmers [proportion] summit B / (A + B) summit A + B
+1     AB    255991               0.53               0.49        98.62
+3   AAAB    107728               0.22               0.33       160.51
+5 AAAAAB     68379               0.14               0.19       253.34
+4  AAAAB     53663               0.11               0.25       206.92