Outputs and interpretation¶
Use the accepted-prediction table for counts and later analyses. Use the detailed table to check why ViroSync accepted or rejected a candidate.
Output specification¶
For a batch run, ViroSync writes batch_summary.tsv and batch_report.md in
the selected output directory. It also creates one subdirectory for each input
genome. The genome ID is the input FASTA name without its extension.
The main per-genome files are:
| File | Contents |
|---|---|
phase3_synthesis/virosync_predictions.tsv |
Accepted EVEs. Use this as the main result table. |
virosync_predictions_detailed.tsv |
All Phase 3 candidates, including rejected and overlap-suppressed candidates. The same table also remains in phase3_synthesis/. |
virosync_repeat_candidates.tsv |
Retained direct-repeat pairs for all Phase 3 candidates, linked to final EVE identifiers. The same table remains in phase3_synthesis/; a header-only file has no retained pairs. |
phase3_synthesis/virosync_predictions.bed |
Accepted EVE coordinates in BED6 format. |
phase3_synthesis/virosync_predictions.gff3 |
Accepted EVE annotations in GFF3 format. |
<genome_id>_eves.fna |
Nucleotide sequences for accepted EVEs. This file is absent when there are no accepted EVEs. |
phase3_synthesis/virosync_summary.json |
Per-genome counts and run metadata. |
phase3_synthesis/eve_ani_edges.tsv |
ANI comparisons used for clustering. Can include candidates removed from the final accepted set. |
phase3_synthesis/gene_taxonomy/ |
Per-candidate gene taxonomy tables. Written when at least one EVE is accepted. |
phase3_synthesis/gene_functions.tsv |
Function labels of core genes in the accepted EVEs. Columns: eve_id, porf_id, label, module, evidence, evalue; one row per labelled gene. Written when at least one EVE is accepted and the resource bundle is v1.2.0 or later. See gene-function labels. |
phase3_synthesis/gene_function_length_exclusions.tsv |
Core proteins excluded from the gene-function profile search by its length limit, one row per EVE/protein pair. Columns: eve_id, porf_id, status, reason, length_aa, limit_aa. Written with gene_functions.tsv; a header-only table records no length exclusions. |
notebooks/jupyter/eve_analysis.ipynb |
Per-genome report, including repeat-assessment summaries for accepted EVEs. Use the detailed table and repeat sidecar for rejected candidates. |
eve_gene_map.syntviz.json |
Report figure: the shown EVEs with their flanks, gene categories, gene functions and DIAMOND protein hits between EVE cores, as a Syntviz session. syntviz view opens it in the interactive viewer. Written when the report shows at least one EVE. |
eve_gene_map_syntviz.png, eve_gene_map_syntviz.svg |
The same figure as images. Written only when Node.js is available. |
The Syntviz report retains every shown EVE row, gene and annotation. Its
all-versus-all DIAMOND search compares available core proteins from HIGH and
MEDIUM EVEs with --more-sensitive, E-value ≤ 1e-5 and identity ≥ 20%. LOW
EVEs and genes without protein sequences are not searched. The report streams
the hits and retains each query protein's best hit to another EVE, ranked by
descending bitscore, ascending E-value, then stable feature IDs and alignment
coordinates. Reciprocal hits collapse to one record. These sparse hits support
ribbons and similarity ordering; they do not alter predictions or gene content.
The absence of a ribbon does not establish the absence of homology.
Gene maps outline core HMM matches that qualify for scoring or a contained spatial rescue. Their annotations retain the model, E-value and original DIAMOND validation status. MCP matches receive the MCP symbol; a portal or penton match does not. The marker heatmap counts distinct proteins per qualified model. Candidates that bypassed scoring through the optional phylogenetic rejection path have no hallmark assessment and contribute no qualified heatmap entries. Their existing annotations remain available. Validated MCP annotations remain visible when another profile on the same protein has a higher score. These plotting IDs do not change the marker count, confidence score or taxonomy vote. These marks do not change the gene's taxonomy colour or establish viral integration.
When Node.js and retained hits are available, confidence tiers with 3–500 rows are ordered by protein similarity. Larger tiers retain confidence order. The display shows at most 20,000 links. The saved session records whether the search ran, the number of searched EVEs and eligible core proteins, qualifying input rows (including reciprocal hits and multiple alignments), retained hits, and the retention policy. Explicit search coverage records only searched EVE pairs adjacent in the final row order, in both directions, including pairs with zero hits. A later interactive reorder can therefore show an unknown coverage warning for a newly adjacent pair.
A run that ends before Phase 3, for example because no marker hits or seeds
remain, writes its empty virosync_predictions.tsv,
virosync_predictions_detailed.tsv, virosync_predictions.bed,
virosync_predictions.gff3, virosync_repeat_candidates.tsv, and summary at the
genome root. It need not have a phase3_synthesis/ directory. Empty TSVs retain
their headers. A run that reaches Phase 3 can also have zero accepted EVEs while
retaining rejected candidates and repeat pairs in the detailed outputs.
In batch_summary.tsv, predictions counts all candidates and accepted
counts rows in the accepted-prediction table. Each accepted region has one
class, so the class columns sum to accepted.
Coordinates¶
The TSV and BED files use 0-based, half-open coordinates: [start, end).
Therefore, length = end - start. GFF3 uses 1-based, inclusive coordinates.
The GFF3 interval start + 1 through end describes the same bases as its TSV
and BED row.
Key TSV columns¶
Both tables use output schema 12. The repeat-evidence groups below comprise 18 columns in each table; they are separate from the 17-column repeat-pair sidecar.
| Columns | Table | Interpretation |
|---|---|---|
eve_id, scaffold, start, end, length |
Both | Region identity and final coordinates. eve_id is an opaque identifier; see below. |
confidence_tier, final_confidence |
Both | Rule-based evidence tier and score. |
effective_eve_class |
Both | Published region class. |
hallmark_total, hallmark_unique, mcp_gene_ids |
Both | Viral hallmark and major capsid protein evidence. |
qualifying_hallmark_genes |
Both | Sorted, distinct hallmark gene families from the qualifying core evidence in the scored panel, separated by a pipe (for example, A32). A dot means none qualify. Raw model hits and context-only markers are excluded. ANI class transfer does not change this evidence list. |
gene_taxonomy_viral_interior, gene_taxonomy_cellular |
Accepted | Viral and cellular gene support inside the region. |
taxonomy_best_hits, ncldv_top10_proteins, mirus_top10_proteins, ppv_top10_proteins, cress_top10_proteins |
Detailed | Gene-level taxonomy counts. |
kfd, gc_deviation |
Both | Sequence-composition differences from the host background used by scoring. |
canonical_selection_outcome |
Detailed | Reason for keeping or excluding a candidate. |
joint_seed_provenance |
Detailed | JSON audit of a successful joint rescue, including original child IDs, coordinates, scores, tiers, classes and stop reasons; . otherwise. |
ani_cluster_id, ani_cluster_size, ani_max_percent |
Detailed | Within-genome ANI cluster assignment. A dot marks no clustered relative where applicable. |
taxonomy_class_before_ani, taxonomy_class_propagated_from |
Detailed | Class before ANI-based transfer and the donor EVE, when transfer occurred. |
tir_present, tir_status, tir_candidate_count |
Both | Terminal inverted-repeat evidence and whether a pair can define the boundary. Presence alone does not mean the boundary was changed. |
tir_left_start, tir_left_end, tir_right_start, tir_right_end, tir_identity |
Both | Coordinates of the matched repeat segments and their identity after reverse complementation. Segments may cover only part of a long or gapped repeat. For ambiguous results, these describe a candidate pair. |
tir_scan_start, tir_scan_end |
Both | Genomic interval searched for repeat pairs. |
tir_alignment_capped, tir_alignment_length |
Both | Whether the reported arms were shortened to 500 bp, and the full ungapped alignment length used to select their outer ends. |
tir_boundary_override, pre_tir_start, pre_tir_end |
Both | Whether an accepted repeat pair changed the final coordinates, and the parent coordinates before repeat refinement. Split children share these parent coordinates. |
tsd_sequence |
Both | Candidate 3–9 bp duplication immediately outside the retained TIR anchors, when found. Check tsd_assessment_status before interpreting it at a changed endpoint. |
repeat_evidence_id, repeat_input_id, repeat_assessed_start, repeat_assessed_end, repeat_parent_start, repeat_parent_end |
Both | Stable evidence and input-seed linkage, the interval actually assessed, and its parent before TIR partitioning. |
repeat_left_status, repeat_right_status, repeat_left_assessment, repeat_right_assessment |
Both | Per-end status and JSON with requested and searched host windows, clipping reasons and ambiguous-base counts. A completed search is relative to the recorded method and windows. |
repeat_search_parameters, repeat_filter_counts |
Both | JSON with the discovery method, thresholds and limits, plus aggregate counts of excluded low-complexity and overlapping pairs. |
direct_repeat_candidate_count, direct_repeat_display_id |
Both | Number of retained pairs and a display representative. The display pair has no boundary authority. |
tsd_assessment_status, tsd_anchor_start, tsd_anchor_end, tsd_assessment |
Both | Explicit short-flank assessment and retained-TIR anchors. The JSON includes per-end limits and shifted-anchor diagnostic counts. No anchor is distinct from an assessed absence of a match. |
recombinase_genes |
Both | Distinct protein identifiers with recombinase annotations, including nearby genes and repair recombinases. Inspect the evidence field for their locations and functions. |
integration_gene_evidence |
Both | JSON records with protein identifiers, genomic coordinates, location, enzyme family, annotation source, profile accession and scores. Includes DDE integrases and recombinases. A dot means no qualifying gene annotation. |
integration_hmm_status |
Both | complete means every selected predicted protein was searched, including an empty selection. incomplete_sequence_length means one or more selected proteins exceeded the HMM engine limit. not_assessed means the screen has not completed. |
integration_hmm_unsearched |
Both | JSON list of proteins excluded from the integration HMM search, with original identifiers, lengths, genomic coordinates, strand, EVE context, exclusion reason and limit. An empty list is []; check the status to distinguish a completed screen from one not assessed. |
Repeat-pair sidecar¶
virosync_repeat_candidates.tsv contains one row per retained pair and final
EVE candidate. Join eve_id and repeat_evidence_id to the detailed table for
the assessment windows, statuses, parameters and filter counts. A shared source
assessment can appear under more than one final EVE identifier. Rows are ordered
by eve_id, then candidate_id; row order does not rank the alternatives.
| Sidecar columns | Interpretation |
|---|---|
eve_id, scaffold, repeat_evidence_id |
Final candidate identifier, host scaffold, and source assessment identifier. |
candidate_id |
Deterministic identifier for the pair within its source assessment. |
orientation |
direct: the two arms have the same orientation. |
left_start, left_end, right_start, right_end |
Host coordinates of the matched arms, using 0-based, half-open intervals. |
identity, alignment_length |
Matching-base fraction from 0 to 1 and ungapped alignment length in base pairs. |
method |
Discovery method recorded with the pair. |
interpretation |
unresolved: sequence similarity does not establish host or viral origin. |
outer_start, outer_end |
Interval including both arms: left_start through right_end. |
inner_start, inner_end |
Interval excluding both arms: left_end through right_start. |
A header-only sidecar means there are no retained pairs. It does not mean every
endpoint was searched completely. Read repeat_left_status and
repeat_right_status in the detailed table. When no evidence record exists,
those statuses and tsd_assessment_status are not_assessed, the pair count is
zero, and the remaining evidence fields are dots.
Output compatibility and resume¶
The public output and coordinate versions are independent of checkpoint and artifact versions:
| Contract | Current version |
|---|---|
| Public output schema | 12 |
| Coordinate schema | 2: 0-based, half-open TSV and BED coordinates |
Phase-1 checkpoint, phase1/resume_state.json |
virosync.phase1.resume_state/v4 |
Full Phase-2 checkpoint, phase2/resume_state.json |
virosync.phase2.resume_state/v7 |
Refined-boundary checkpoint, phase2/refined_state.json |
virosync.phase2.refined_boundaries/v7 |
| Accepted and detailed prediction artifacts | canonical-predictions-v8 and detailed-predictions-v9 |
| Repeat-pair artifact | virosync.repeat_candidates/v1 |
Resume validates the input, configuration, software, environment, resources, phase checkpoints and output artifacts. The Phase-2 checkpoints retain the nested repeat assessments and confirmed seed intervals, without a second candidate-coordinate pair; TSV and BED reports cannot reconstruct that state. Incompatible checkpoint schemas cannot be reused. A changed run fingerprint starts a new run; otherwise only the validated sequence of completed phases can be reused.
The repeat-candidate table is required even when it has only a header. If both
root and Phase-3 copies are recorded, they must agree. Missing or altered pairs,
invalid coordinates, inconsistent counts, or broken links to detailed candidates
prevent a completed-run resume. --clean-run requests a new run regardless of
the saved state.
Region identifiers¶
eve_id has the form EVE_<scaffold>_<start>-<end> when no other candidate
shares the coordinates. A candidate that shares its coordinates with another
candidate, for example an ordinary candidate and a frameshift-rescue candidate,
carries the suffix -c followed by 16 hexadecimal characters, such as
EVE_scaffold_1_1000-5000-c3f2a9b7c1d0e4f56. Candidates created together at
the same coordinates all carry the suffix; a candidate added later at
coordinates an existing candidate already uses carries the suffix while the
earlier candidate keeps its plain identifier. The suffix is derived from the
candidate's internal seed and is deterministic for a given input and
configuration. The same identifier appears in the TSV, BED and GFF3 outputs.
Treat eve_id as an opaque identifier: read coordinates from the scaffold,
start and end columns rather than from the identifier.
canonical_selection_outcome records direct retention, gate rejection, loss
of a frameshift-rescued marker, overlap selection or suppression, or lack of
viral evidence. Both kept and overlap_selected can identify accepted
candidates. Use the accepted-prediction table to determine which candidates
ViroSync accepted.
Class meanings¶
| Class | Meaning |
|---|---|
NCLDV |
Nucleocytoviricota |
MIRUS |
Mirusviricota |
PPV |
Preplasmiviricota, including virophage and polinton-like virus references |
CRESS |
Circular Rep-encoding single-stranded DNA viruses |
PHAGE |
Bacteriophage-like taxonomy |
VIRAL_UNKNOWN |
Viral evidence is present, but no single lineage wins |
UNKNOWN |
No published lineage class is resolved |
ppv_subtype is VP or PLV only when subtype-specific marker evidence
supports that label. A dot means unresolved or not applicable. An accepted
UNKNOWN region requires a contained spatial witness or support from an ANI
cluster with a marker-bearing EVE; this support alone does not prove viral origin.
EUK-pEVE is a reference class, not a published class. It marks viral-like
proteins that sit in eukaryotic genome assemblies (resource bundle v1.2.0 and
later). ViroSync counts an EUK-pEVE hit with at least 25% identity as viral
evidence, in marker validation, boundary refinement, gene-level taxonomy and
region scoring, and never as cellular or host evidence. The class names no
lineage: it adds no vote for NCLDV, MIRUS, PPV or CRESS, and a lineage
hit in the same top 10 always decides. A gene or region whose viral hits are all
EUK-pEVE is VIRAL_UNKNOWN, unless a structure-derived profile supplies a
class (see Profile classes). In the
region vote, a gene whose viral hits are all EUK-pEVE casts no vote when any
other gene votes for a lineage, so it never dilutes the lineage majority. It votes
VIRAL_UNKNOWN only when no gene votes for a lineage. Votes of VIRAL_UNKNOWN
that come from conflicting lineage hits do not change. The A1 seed export has no
gene taxonomy. It applies the same marker votes to the top-10 hits of the seed's
validated markers, so it publishes the class that Phase 3 gives for the same
evidence. Whenever these rules decide the class (a profile class votes, or all
qualified viral hits are EUK-pEVE), A1 derives the likely family with the Phase 3
function, from the region family, the marker families and the class: a region
whose viral hits are all EUK-pEVE without a profile class is MIXED, and in a
mixed region one marker family must hold at least 70% of the family-bearing
markers to name the family. Otherwise the likely family stays the family of the
seed. The taxonomy_best_hits string counts each
interior gene once, in the buckets EUK, MITO, PLASTID, BAC, ARC, UNK,
NO_HITS, NCLDV, MIRUS, PPV, CRESS, GVMAG, PHAGE and EUK-pEVE.
The report gene maps put a gene in the category EUK-pEVE when its qualifying
viral hits are all EUK-pEVE, or when no viral hit qualifies and its best hit is
EUK-pEVE. The category has a color of its own and the legend entry "EUK-pEVE
(viral-like, eukaryotic genome)". A qualifying lineage hit gives the gene the
color of that lineage instead. The category distribution shows EUK-pEVE genes
as a segment of their own. The report never takes an EUK-pEVE hit, or a
lineage rank that ends in -pEVE, as host.
MCP fold classification¶
phase3_synthesis/virosync_jelly_roll_proteins.tsv reports MCP support and
fold assignment as separate fields:
mcp_supportstates whether an MCP-like match is only acandidate, issequence_supported, or isstructure_supported. Only a supported record counts as MCP evidence in this annotation.typereports the inferred protein fold:DJR,SJR,HK97, orUNKNOWN.UNKNOWNmeans unresolved fold. It does not mean that MCP support or taxonomy is absent.effective_eve_classin the prediction tables reports the region-level taxonomy consensus from qualified viral-reference matches. Fold assignment does not set this class.
A supported Mirus_MCP marker receives an inferred HK97 type unless
stronger optional fold evidence takes priority. This is a marker-family
inference, not structural or experimental confirmation. The confidence
column in the MCP table describes fold evidence; it is distinct from
final_confidence for an EVE.
Capsid evidence¶
A hit to one of the 27 capsid-type structure-derived profiles (penton, capsid and
coat functions; see the
profile reference) counts as capsid evidence. The
region flag has_capsid_evidence is true when has_mcp is true or any
validated or validated_novel hallmark hit of the region is such a profile. The
test reads every hit before deduplication, so a higher-scoring non-capsid profile
on the same protein does not hide the capsid hit. A hit of any other status, such
as supported or unvalidated, gives no capsid evidence, even when it outscores
the other profiles on its protein. The A1 seed export applies the same rule to the
anchors of each seed, which carry the status of their marker hit. This flag
describes the existing marker and structural evidence and supplies the capsid
shortcuts of the class-specific acceptance gate. Graduated hallmark scoring and
spatial rescue use the separate exact-model catalogue described under
Confidence and limitations. A catalogue structural
anchor is distinct from a catalogue capsid assignment. Neither the flag nor
a model-name substring adds an unlisted model to that catalogue.
A region whose viral hits are all EUK-pEVE, in the marker
database, the proteome database or both, and whose markers supply no profile
class, has the likely family MIXED. This holds whatever lineage the marker names
or the Phase 1 region class suggest, and the gate reads a likely family of MIXED
before the region class. The region passes the gate through the same rule as a
VIRAL_UNKNOWN region of mixed markers: a length above 2,000 bp, and capsid
evidence or two hallmarks with one non-ATPase hallmark. A region with any lineage
viral hit keeps its family logic.
has_mcp and mcp_gene_ids name major capsid proteins only. The class-vote
override, ANI class transfer, jelly-roll classification and Boltz input
selection still need an MCP. evidence_profiles.json reports both flags.
The report gene maps (overview, detailed contexts and Syntviz) draw a black
outline around each gene with capsid evidence. A gene has capsid evidence when
it has a validated or validated_novel marker hit of an MCP model or of one
of the 27 profiles, or when the jelly-roll table supports it as an MCP. A
supported MCP also has a gold circle. In the Syntviz session, MCPs are in the
style group mcp and the other genes with capsid evidence are in the style group
capsid. Both groups draw the same outline.
Profile classes for EUK-pEVE-only hits¶
The 33 structure-derived profiles come from EVEs of known classes. For 32 of
them, one class holds at least 80% of the training EVEs, counted in the
context_* columns of release-manifests/resources_v1_1_0/capsid_model_curation.tsv
(PPV, NCLDV, MIRUS, PHAGE, CRESS and VIRAL_UNKNOWN, with
VIRAL_UNKNOWN in the denominator). The classes come from the 2026-08-08 ViroSync
screen of EVEs. Twenty-nine profiles are PPV, EVE_CAPSID_NOVEL_0026 is
MIRUS, 0033 is CRESS and 0018 is PHAGE. 0002 has no class (NCLDV 9 of
15). STRUCTURE_PROFILE_CLASSES in src/virosync/pipeline/phase3/mcp_detection.py
holds the table, and a test derives it from the curation file.
The curation table states that an EVE context is not a taxonomic assignment of
the profile. ViroSync therefore uses the class only for a marker hit whose
qualified viral references are all EUK-pEVE, which names no lineage. A hit with
any lineage reference, or with no qualified viral reference, gets nothing from its
profile. For such a hit the class has three effects:
- The marker votes the class in the region vote as an ordinary marker, with the
weights of 2 and 3. It never takes the flat weight of 5 of an MCP and never
overrides the other genes, also for
0029. Proteome gene records whose hits are onlyEUK-pEVEstill cast no class. - The class is the marker family of the hit in Phase 3 (
marker_family_hits,marker_dominant_family) and counts as one marker of that family in the Phase 1 region family. The likely family and the acceptance gate then use the class: a 3 kb region whose only marker is a validatedEVE_CAPSID_NOVEL_0008hit with onlyEUK-pEVEreferences publishestaxonomy_classPPV, the likely familyPPVand takes the PPV path of the gate. APHAGEclass has no gate family, so its likely family isUNKNOWN. - The A1 seed export applies the same marker votes, with the same taxonomy lookup, so A1 and Phase 3 publish the same class for the same evidence.
Each protein counts once. When several profiles hit one protein, the profile that wins the per-protein deduplication of the vote gives the class: an MCP that can vote as one first, then the higher score, then the first hit. The marker family in Phase 3, in the Phase 1 terminal-repeat children and in A1 follows the same winner.
Exception: Phase 1 has no CRESS or PHAGE region family for any marker, so the
CRESS class of 0033 and the PHAGE class of 0018 apply from Phase 3 on (the
vote, the marker family and the gate). In Phase 1, in its terminal-repeat
children and in the region_classification of the A1 export, a hit of either
profile gives the region family UNKNOWN. The A1 taxonomy_class and likely
family still follow the vote.
Hits whose references are all EUK-pEVE vote the profile class when the profile
has one. Without a class (0002, other markers such as GVOGm0003) they stay
VIRAL_UNKNOWN and use the MIXED rule. Two classed profiles of different
classes tie and leave the region VIRAL_UNKNOWN with the likely family MIXED.
Gene-function labels¶
A resource bundle of v1.2.0 or later lets ViroSync name the genes inside each
accepted EVE. Labels follow the gene vocabulary of Bellas and Sommaruga (2026,
bioRxiv, doi:10.64898/2026.06.19.733378, Fig. 4). Labels never change detection
or boundaries. A label that the hallmark catalogue maps to a panel at E ≤ 1e-5
adds compatible context to the hallmark score,
so it can raise final_confidence and the tier. It cannot add a core family, a
floor or a seed. Flanking genes get no label.
ViroSync picks one label per core gene from the first source that gives one:
- Curated model. The gene's best-scoring Phase 1 HMM hit at E ≤ 1e-5 names
the gene when it is a curated ViroSync model. Evidence: the model name. A
renamed or relaxed OG-backed model (sources
gvclass_existing_og_to_vsandOG_backed_relaxed_low_overlap_*) names a gene only when its top Pfam domain occurs in at least 50% of the sampled members of the model and belongs to the vocabulary. Evidence:<model> (OG; <domain> in k/n members). Metadata that cannot be trusted gives no label from that model: no sampled members, a malformed count, or a count above the number of sampled members. - Pfam. The strongest hit of the gene against the Pfam families of the
vocabulary, at an i-Evalue of 1e-5 or lower. Evidence:
Pfam:<name>. - VOG. The strongest hit against a VOGDB group whose consensus description
names a vocabulary gene, at a full-sequence E-value of 1e-9 or lower.
Evidence:
VOG:<id>.
module groups the labels: capsid (MCP, mCP, ATPase, Protease, Portal,
Terminase, Triplex), replication (PolB, pPolB, PolA, SF1, SF3, AEP),
integration (YR, RVE, Int), mriya (VLTF2, VLTF3, HUH), other (MTase, Tet,
SLATT, Lipase) and hallmark (RNAPL, TFIIB). evalue is the E-value of the hit
that gave the label.
E-values follow the hmmscan convention: the database size is the number of
profiles in gene_function.hmm, not the number of genes a run searches. A
gene gets the same E-value and label whether the run searches it alone or with
thousands of other genes. The profile files and their selection are described in the
resource bundle.
The profile search supports proteins of at most 100,000 amino acids, measured
after terminal * symbols are removed. The first proteome file containing a
protein supplies its sequence; a duplicate in the rescue FASTA cannot replace
an overlength original. Longer proteins remain in the input and EVE gene
content but are excluded from this profile search. The length-exclusion table
records status=unsearched, reason=sequence_length_limit, the processed
length and the limit for each affected EVE/protein pair. This is missing
assessment, not evidence that a protein lacks a function. Supported proteins
are searched with the same profile-count normalization, and existing curated
model evidence can still label an excluded protein. Both gene-function tables
are included in the completed run's artifact hashes.
Core genes include confirmed frameshift-rescued proteins inside the EVE, which
have no gene-taxonomy record. ViroSync searches them from the rescue FASTA of
Phase 1. Labels of rescued proteins appear in gene_functions.tsv; the report
gene maps draw the Phase 0 genes only.
On a bundle before v1.2.0, ViroSync logs one INFO line and writes neither
gene-function table, and the report draws the gene map as before. A bundle
with only one of the two gene-function files is corrupt, and the run stops with
an error that names the missing file. With the table, the static gene map
prints each label under its core gene and drops a label that has no free line,
and the Syntviz figure uses the label as the feature name and records it, with
its evidence, as a function annotation.
Workflow summary¶
ViroSync predicts genes, finds viral marker proteins, and validates marker matches against viral references. It builds confirmed seed regions around supported markers and preserves each complete seed while extending outward. The last phase combines marker, taxonomy, composition, and optional domain or structure evidence. Acceptance rules then select the reported regions. Within each genome, ANI clustering can transfer a class from MCP-bearing members that meet the transfer rules and agree on the class. Scoring and acceptance gives each step, the weights and the model assignments.
Optional InterProScan, TMVec2, and Boltz/Foldseek analyses annotate and score existing candidates. They do not create regions without marker-seeded candidates.
Reference hit selection¶
Marker validation and host-signature estimation read the top 10 DIAMOND hits of each marker-domain query against the marker database. They use DIAMOND's rows as they are. The host-signature model does not create seeds.
Boundary refinement, gene-level taxonomy and the Phase 3 DIAMOND check search the combined proteome. That database holds the same subject ID several times, several near-identical proteins from one genome, and some proteins under both a cellular and a viral label. Taken directly, such copies fill the top 10 and push viral references out. For these searches ViroSync asks DIAMOND for ten times the requested number of targets and then keeps, for each query and in DIAMOND's order:
- For a protein (
<genome>|<protein>) that appears under a cellular label (EUK,BAC,ARC,MITO,PLASTID) and under a viral label, the viral row at the position of the first occurrence. The cellular row is dropped.EUK-pEVEis a viral label here, so anEUK-pEVErow replaces theEUKrow of the same protein. - The best hit of each target genome. The genome is the subject ID up to
|including its label, soEUK__GCA-013389655-1andPPV__GCA-013389655-1count as different genomes. - The first N hits, where N is the requested number of targets.
The filter rewrites the DIAMOND table in place with the same columns. The all-against-all search among EVE core proteins in the Syntviz figure is not a top-hit search and uses no filter.
Seed markers¶
An EUK-pEVE reference hit with at least 25% identity validates a marker like a
viral reference. Ordinary region assembly lets a marker with no DIAMOND match
(validated_novel) start a region only when its model is an MCP or gives
capsid evidence. Catalogue-qualified validated_novel core
markers can also form a three-core spatial witness.
A validated marker can start a candidate region unless its HMM model is a host
kinase family: VS000084, VS000087, VS000094, VS000191 and VS000319
(protein kinase and ABC1 kinase models). These families share distant homologs
with NCLDV kinases, so host kinases pass marker validation. A marker from one of
these models never seeds a region. Model names match without case and without a
suffix after the first _ or .. The terminal-repeat step in Phase 2 follows the
same rule. Every repeat-bounded child must also receive at least one complete
confirmed seed. A viral hit alone cannot turn an unseeded residual slice into
an EVE. A partition that cuts or loses a confirmed seed keeps the parent whole.
A blocked marker can still appear in marker counts when another marker seeded
the region that contains it. Only catalogue-qualified evidence contributes to
the graduated hallmark score.
The additive hallmark rescue examines retained Phase 1 marker records with status
validated or validated_novel, at E <= 0.01. supported and unvalidated
records stay diagnostic. The rescue does not recover HMM models discarded by marker
retention. Three independent core families on three
proteins in one compatible panel and scaffold, within a full-gene span of at
most 15,000 bp, give a provisional MEDIUM floor. A mapped MCP or CRESS capsid
alone gives a MEDIUM floor; a distinct compatible core family on a different
protein at an edge-to-edge gap of at most 5,000 bp gives a HIGH floor. These
rules do not require a DIAMOND hit and do not change its recorded status.
The search bounds candidate genes by coordinates and skips groups lacking the
required distinct families. For each left endpoint it retains the earliest
qualifying right endpoint; partner searches include long overlapping genes
without clipping their coordinates.
Phase 3 indexes retained evidence by scaffold and start coordinate, then routes
fully contained records and witness memberships to each final boundary in their
original order. Functional annotation uses the same boundary coordinates and
the retained-marker index, including rescued frameshift genes.
The widest witnesses not wholly contained in an ordinary confirmed seed become separate confirmed seeds with a stable identity and the exact full-gene hull. Partial overlap does not trim either seed. A witness contained in a seed or in another witness, or with an identical hull, adds no seed. Ordinary seeds keep their original identities. The normal extension, merge and repeat-partition rules preserve every assigned seed.
Seed-preserving extension¶
The complete assembled Phase 1 interval, including its padding, or the exact
full-gene hull of a hallmark-rescue witness, is the protected seed. Its original identity and coordinates remain attached to every
derived candidate. The searched flanking envelope is separate from the EVE:
finding the first or last predicted gene does not remove gene-free seed ends.
For ordinary non-CRESS seeds, extension can use the complete searched flanking
gene interval together with the protected core. The Phase 1 extension_kb
setting still supplies the terminal-repeat and annotation radius; it does not
cap this outward walk. CRESS seeds and seeds without a searched mapping keep
their core as the extension envelope.
One controller starts at the seed and walks flanking genes in genomic order, independently on each side. Identity-qualified viral hits provide positive support. Optional taxonomy ML supplies per-gene support without using the host-signature model as a positive feature. Ambiguous genes, genes without hits and isolated model-matched host genes do not extend the boundary on their own. They remain pending until connected positive support occurs within the five-gene lookahead and the searched nucleotide envelope. Five unsupported genes end the support search. If the envelope ends after only one to four unsupported genes, the reported limit is the search envelope.
Three consecutive exterior genes matching the host-signature model at the
configured host-lineage-share threshold (default 0.35), with no qualifying viral
support in those genes, stop
extension before the first gene in the run. A single eukaryotic best hit does
not establish this stop. A missing model or missing taxonomy is reported as
an evidence limitation; it does not imply host origin. Overlapping genes are
checked before a supported gene can extend the boundary past another feature.
A new exterior endpoint must retain the complete supported gene. A gene that
crosses a host stop, missing-taxonomy edge or search limit cannot commit a
partial extension. This does not trim a gene or any sequence already inside
the confirmed core.
A host block crossing the seed edge can stop new growth at that edge, but
cannot cut the seed.
An independently confirmed seed remains protected beyond another seed's stop.
If merging would cross that stop, the candidates stay separate even when their
retained intervals overlap. A wider searched envelope can therefore expose a
stop and split a merge that a shorter envelope had allowed.
Phase 3 reports the retained coordinates directly. It does not export a second
candidate interval or reduction fields. Integration-gene scans use the retained
interval plus the configured Phase 1 extension flank.
Host-lineage share measures the hit weight within the host's lineage; it does
not compare a gene's hit composition with the pooled model by weighted Jaccard.
Standalone checkpoint audits must load the configured taxonomy labels before
scoring; normal fresh and resumed Phase 1 runs initialize this lookup.
The configured taxonomy weighting applies to these hit shares, including the
stored per-hit bitscores when taxonomy_weight_mode is bitscore.
The existing phase2.host_trim_enabled and host_trim_score_threshold
settings control this exterior stop. ViroSync rejects window, step, host-fraction,
viral-fraction, buffer and overlap-score keys in phase2.
The controller distinguishes a host stop, a support gap and the search-envelope limit. A later ML, merge, repeat or rescue operation cannot cross a host stop. Reaching the envelope records the limit without an automatic new search. Each independently confirmed seed beyond a stop is processed separately. Overlapping search envelopes alone do not merge candidates. An allowed merge retains every source seed and the tightest recorded stop on each side. The controller checks all reachable overlapping candidates, including those separated in the list by an independent rescue or CRESS call. It does not merge disjoint candidate intervals. A split assigns each original seed whole to exactly one retained child, or leaves the parent intact.
Final gene sets, markers, composition and optional evidence are computed for the retained coordinates before scoring. Output and resumed-state checks require complete seed containment. Incompatible boundary checkpoints must be recomputed rather than reconstructed from late, mutable boundary fields. Each Phase 1 checkpoint seed must exactly match its one original seed record. Phase 2 also checks that its complete source membership agrees with Phase 1, both when writing new boundaries and when resuming them. Marker family votes are deduplicated by protein identity, including when HMM queries carry domain-coordinate suffixes. Region marker counts retain the highest-scoring profile per protein. After merging or repeat partitioning, the final region class and marker counts are recomputed from markers in the retained interval for every candidate using the same marker-retention policy as final evidence synthesis, including the selected ablation. A3 uses that same policy at its unchanged seed coordinates. Compact CRESS regions retain their separate classification. The three-gene stop is a working detection rule, not a calibrated biological cutoff; its effects require comparison with positive controls.
Confidence and limitations¶
final_confidence is a rule-based score, not a calibrated probability that a
region is an EVE. The default tiers are HIGH at 0.7 or above, MEDIUM from
0.2 to below 0.7, and LOW below 0.2. Marker rules can accept a LOW candidate
without changing its reported tier. Several score terms reuse marker or
taxonomy evidence, so they are not independent observations.
The packaged hallmark_panels.json records exact model aliases, core and
support roles, structural anchors, capsids and excluded profiles for established
and unresolved panels. Panels group evidence; they do not assign taxonomy. The
catalogue is part of the run's resource fingerprint. Exact retained HMM scores,
E-values, query envelopes and measured domain scores are carried through Phase 1
resume state. Unmeasured diagnostics are absent, including those unavailable
from frameshift evidence. HMM envelopes do not define genomic seed bounds.
VS000652, VS000745, VS000783, VS000788 and VS000791 match the existing
MCP family in Nucleocytoviricota and Polinton-like virus panels; VS000652 and
VS000783 also match Virophages. These exact aliases receive MCP annotation,
gene-function labels and existing capsid scoring permissions. Panel compatibility
does not assign a hit's lineage, and multiple aliases supply only one MCP family.
The existing MCP core aliases VS000236, VS000496 and VS000005 also receive
exact runtime MCP recognition and explicit MCP labels, with their catalogue
roles and panel assignments unchanged.
All 33 EVE_CAPSID_NOVEL_* models resolve by exact ID. Penton models share
the Penton family and cannot anchor a capsid bonus or capsid-alone floor.
Virophages pentons can join three-core witnesses for a MEDIUM floor or partner
a capsid MCP within 5 kb for a HIGH floor. Profiles
without an established panel assignment use one-family unresolved panels,
with no scoring context from other families. They cannot combine with
established-panel cores, so true combinations can remain undercounted.
Of the 22 novel Penton profiles, 0002 retains an unresolved core with
support-only Virophages Penton context; the other 21 use the Virophages Penton
core family. All 22 supply support-only mCP context in Polinton-like virus
and Maverick panels. Profiles 0019 and 0027 are Penton aliases, not
independent minor-capsid families.
Protease profiles 0001, 0006, 0015, 0020 and VS000374 supply support-only
Protease context in those three panels. Profiles 0018 (gp54 baseplate/tail
apparatus) and 0026 (assemblin/pUL26N-like protease) remain excluded from scoring.
VS000375 and VS000151 share one Nucleocytoviricota D5_primase_domain
context family. VS000146, VS000149, VS000072 and VS000164 share one
mRNA_capping context family. Partial-domain evidence does not establish
complete architecture or viral specificity, and excluded fusion families remain
excluded. None of these support-only assignments creates a core or spatial seed.
Exact retained VOG labels supply additional support-only links: four MCP models
(VOG03169, VOG05151, VOG45855, VOG50158), A32 (VOG21003) and TFIIB
(VOG04885) in Nucleocytoviricota; PolB (VOG23436) in Nucleocytoviricota and
Mirusviricota; and Penton/mCP (VOG37123) in Virophages/Polinton-like/Maverick
panels. Existing label precedence, per-profile cutoffs and final-coordinate
containment apply. These domain assignments do not establish viral specificity.
VS000382 aliases the existing Nucleocytoviricota VLTF3 family and adds no
independent family. The putative MCP EVE_CAPSID_NOVEL_0029 belongs to the
existing MCP family in Nucleocytoviricota and Polinton-like virus panels.
It contributes core credit with capsid=false, which withholds the graduated
capsid term, catalogue capsid-alone floor and capsid spatial witness. Its separate
MCP registration in mcp_detection.py still governs MCP annotation, Phase 1 seed
confidence, class-vote overrides and output keep rules. It can join ordinary three-core
witnesses within 15 kb for a MEDIUM floor. Available controls contain no
qualified positive 0029 hit to justify enabling those capsid effects;
catalogue tests alone do not validate this biological assignment.
Graduated core evidence requires 0 <= E <= 0.01 and validated marker evidence.
An ordinary validated marker must have a viral top-10 reference hit at >=25%
identity; the existing validated_novel criteria remain separate. Supported
or unvalidated hits remain diagnostic records and cannot supply qualifying
cores, confidence floors or rescue seeds, including structural-anchor models.
Maximum family-to-protein matching prevents repeated profiles,
families or one protein from counting twice. Strong evidence has E <= 1e-5.
Support-only links require this strong threshold in both Phase 1 and Phase 3.
They add coherence only within a panel with a qualifying core and cannot add
cores, catalogue floors or rescue witnesses. Coherence can raise a single-core
score, but the fewer-than-two-core cap still prevents a HIGH score.
Three or more independent core groups receive weight 1 each. A pair receives
weight 1 per strong group and 0.5 per weak group, using the valid assignment
with the most strong groups. A singleton receives weight 1 if strong and 0.25
if weak. The marker component is capped at 1 and combines 0.2 times the weighted
core count with a capsid term of 0.4, discounted by the applicable weak weight.
Compatible context adds 0.05 per additional independent group, up to three,
scaled by the weighted-to-unweighted core count. Function and integration hits
can supply context at E <= 1e-5, but cannot become core groups or create seeds.
Only genes wholly inside the final retained interval contribute.
The viral-gene fraction uses only interior genes with a viral reference hit at
=25% identity. Raw NCLDV/MIRUS or PPV prefix flags remain informational and cannot replace a zero count of identity-qualified viral genes. The seed-cluster component describes marker support separately from this gene-taxonomy term.
A confirmed frameshift rescue and an overlapping ordinary or rescued protein carrying the same marker model on the same strand are treated as one scoring locus. A protein that links different model groups is left separate. Phase 3 uses one representative for gene-taxonomy counts, marker counts and lineage votes. The same identity defines independent catalogue cores and score-qualified spatial witnesses, including after boundary reassessment. Original witnesses and confirmed seed intervals remain unchanged. Evidence profiles export the protein-to-locus mapping used for scoring. Capsid-fold counts and their bonus also count each linked locus once, using its supported evidence before confidence rank. Linked alternatives cannot contribute extra independent votes to these terms. Raw marker and fold records, rescued sequences, annotation IDs and all confirmed seed intervals remain available. Distinct models, opposite strands and nonoverlapping intervals are not joined by this rule. This coordinate-based heuristic cannot distinguish a fragment bridge from a rescued read-through across real tandem copies. A1 stops before Phase 3 scoring; its marker counts remain raw translation diagnostics and its confidence is zero.
Ordinary ORF fragmentation remains a scoring limitation. In a paired single-deletion control, one viral gene split into two ordinary predicted ORFs: the viral-gene fraction changed from 1/6 to 2/7 and confidence from 0.308857 to 0.433523. Rescue-locus deduplication did not change either score because the rescued translation was absent from the taxonomy table. This control supports marker deduplication and seed preservation, but does not establish robustness to fragmented genes or a rescue-dependent sensitivity gain. The aligner also reported three frameshift events for one planted deletion; event counts do not measure independent genomic lesions.
Non-marker components and cellular penalties remain active. Small-region penalties use the catalogue's full-weight capsid qualification. A candidate without qualifying core evidence is capped below MEDIUM, unless it has an eligible supplementary module; one with fewer than two independent core groups is capped below HIGH before floors. A qualified capsid supplies a MEDIUM floor and a capsid with a distinct compatible core group supplies a HIGH floor without a distance restriction. The spatial rules add their floors only when all witness genes remain fully contained. Floors use the configured tier thresholds, whose defaults are 0.2 and 0.7.
A retained spatial witness can pass acceptance with an explicit rescue reason,
including for an UNKNOWN class, and survives the no-viral-evidence ANI filter.
This does not rewrite taxonomy or DIAMOND status. Detailed evidence records
carry the original status, qualification, component values, witness members
and floor provenance. These are provisional candidate rules, not biological
confirmation of viral origin or integration. Raw HMM support does not cancel
an exterior host stop; an independently confirmed seed beyond that stop keeps
its own protection.
Reference coverage limits marker validation and lineage assignment. ViroSync uses predicted genes to refine boundaries, so gene prediction errors and fragmented assemblies can affect the result. Independent evidence of cellular homology inside an EVE can lower its score. Host-signature model outputs are diagnostics and extension-stop evidence; they do not contribute a score penalty, restrict the viral-enrichment bonus or supply a non-host-gene-count acceptance alternative. Preserving a confirmed seed does not guarantee final acceptance or establish viral integration. Scaffold order can change the background used for composition scoring. Structural matches are computational support, not experimental validation.
The Phase 1 hallmark HMM search skips predicted proteins longer than 100,000 amino acids. A completed run therefore does not establish that all predicted proteins were screened for viral hallmarks.
ANI class transfer can cross a chain of pairwise links, and shared host sequence can contribute to an alignment. Mixed insertions and capsid exchange can also conflict with a region-level class. Inspect the detailed table, gene-taxonomy tables, and ANI edges for important calls. A missing ANI edge does not show that two short regions are unrelated. Short sequences may not support a comparison.
Integration evidence¶
Three repeat observations have different roles:
| Evidence | Sequence relationship | Role |
|---|---|---|
| Terminal inverted repeat (TIR) | Opposite orientations, compared after reverse complementation | A qualifying, unambiguous pair can refine or split a candidate boundary. |
| Short-flank match | Exact 3–9 bp match immediately outside retained TIR anchors | Candidate target-site duplication (TSD); evidence only. |
| Long direct-repeat pair | Same orientation, at least 50 bp under the current search method | Annotation near the assessed endpoints; does not change accepted boundaries. |
Terminal inverted repeats¶
Terminal inverted repeats (TIRs) are paired sequences in opposite orientations.
The repeat screen searches the original, unmasked candidate sequence and its
extended flanks, limited to the region with gene-taxonomy coverage. The flank
length is phase1.extension_kb (5 kb by default). A qualifying pair must enclose
at least one complete validated marker-bearing protein. Repeated hits to the
same protein provide one anchor. Unambiguous pairs with complete gene-taxonomy
coverage can propose boundaries within the controller's reachable span.
A proposal must contain its assigned confirmed seeds and respect host stops.
Incompatible repeat arms remain annotations without changing coordinates.
ViroSync recalculates composition and gene evidence for the final span.
EVE acceptance rules still apply.
Disjoint pairs can divide a merged candidate into several EVE candidates.
Leading, intervening and trailing segments remain candidates only when they
receive complete confirmed seeds, including segments without TIRs. Every
source seed must belong to exactly one retained child. Each child receives its
own classification, marker counts and
verification. The detailed table includes every retained child. The accepted
table includes children that independently pass the usual acceptance rules.
If a proposed child lacks a confirmed seed, overlaps another child or leaves
a source seed unassigned, the whole split is rejected and the parent is kept.
The parent coordinates remain in pre_tir_start and pre_tir_end.
Repeat-defined children may extend beyond the parent within the interval that
Phase 2 checked during seed extension, clipped to any recorded host stops.
Merged parents use only the checked intervals of their contributing seeds.
CRESS seeds retain their Phase 1 seed interval. An unavailable host model adds no
host stop; missing gene-taxonomy records inside a child still veto refinement.
A host run extending beyond the checked interval cannot be evaluated past that
interval, just as in gene-walk extension. Repeat scanning and candidate conflict
detection use their existing search windows; the checked interval limits which
partitions can be accepted. Phase 3 joint rescue retains its fixed hull.
For tir_status=detected, exactly one pair must match the final outer endpoints,
and both pre-TIR coordinates must be recorded. tir_boundary_override is true
exactly when the final interval differs from that pre-TIR interval. A qualifying
pair can therefore be detected without changing an already matching boundary.
Identical repeats on neighboring elements can also form a pair spanning both.
When local and spanning pairs compete, the scanner retains the unsplit parent
with tir_status=ambiguous. Nested and overlapping alternatives receive the
same treatment, even when another part of the parent has an independent pair.
A split cannot discard or bisect a confirmed seed. Gene-taxonomy evidence alone
does not create an unseeded neighboring candidate. Other predicted genes may
cross a repeat boundary.
They retain their full coordinates under the usual interval-overlap rules,
so one crossing gene can appear in both
neighboring regions. Repeat boundaries that conflict across separate parent
candidates retain the original candidates.
Bases added outside a parent must not overlap a final child of another parent.
Plans adding such overlaps revert as a whole; a merely inward or unchanged
neighbor is retained. Identical final intervals retain the shared-pair veto
and are recorded as shared_pair; the restored parent reports the identical
pair's evidence. Other new overlaps are ambiguous.
Touching endpoints and pre-existing overlaps do not create a new conflict.
An outward endpoint cannot cut a validated marker protein in the checked flank.
These flank markers veto cuts but do not create new seed anchors or ownership.
The search uses exact 7 bp seeds and ungapped matches of at least 50 bp at 90%
identity or better. It scores matches at +2 and mismatches at −4 and uses the
full local alignment to select matching outer bases. It reports at most 500 bp
from each outer end; these reported segments must also meet the identity
threshold. It rejects a reported left arm containing non-ACGT bases, more than
80% of one base, base entropy below 1.2 bits, or at least 80% periodic identity
for periods of 1–12 bp. The right arm is checked against the identity threshold
without a separate complexity filter. The 50 bp minimum is an empirical search
cutoff, not a biological limit. Shorter, diverged or indel-rich TIRs can be
missed. The reported matched segment can cover only part of a longer repeat;
tir_alignment_capped=1 identifies shortened segments. The full ungapped
alignment length is recorded in tir_alignment_length.
ViroSync uses GenomeTools 1.6.6 to index each candidate search interval with suffixerator
and locate exact seven-base seeds with repfind. Native output contains seed
locations rather than all possible repeat pairs. A seed contributes only when
its marker-specific left and right occurrence counts produce at most 4,096
pairings. Each eligible pair is generated once. Overlapping search intervals
share base comparisons; each distinct marker-clipped interval is scored separately.
This retains alternatives needed to identify ambiguous boundaries.
The segment scorer uses mismatch and score prefix sums with an identity-indexed range query. It selects the highest-scoring eligible segment in O(n log n) time per group, where n is the interval length. Ties prefer higher identity, then longer alignment, then the earlier start.
tir_status |
Meaning |
|---|---|
detected |
A qualifying pair defines this child's boundary. |
ambiguous |
Repeat evidence does not support a split with whole confirmed seeds; the parent interval is retained. |
shared_pair |
Distinct candidates would acquire the same interval; parent intervals are retained. |
taxonomy_incomplete |
The marker span or a proposed repeat-defined interval lacks required gene-taxonomy coverage. |
not_detected |
No qualifying pair defines this region, including a retained neighboring segment without TIRs. |
no_marker_anchor |
No retained marker span was available to anchor the search. |
not_assessed |
Repeat screening has not been applied. |
Integration-associated genes¶
The default gene screen uses five bundled Pfam profiles through PyHMMER. Both sequence and domain scores must pass the profile's curated gathering threshold. It runs without InterProScan and covers the retained EVE interval plus the configured flanking extension. Each annotation records whether its gene is interior, upstream, downstream, or crosses a boundary.
The integration HMM screen searches selected proteins up to 100,000 amino
acids long. Longer proteins keep their sequences and identifiers and appear
in integration_hmm_unsearched for each affected EVE. Their HMM assessment
is missing. A dot in integration_gene_evidence does not establish absence
of an integration gene when integration_hmm_status is incomplete.
Independent marker and InterProScan annotations remain available for these
proteins. Screening status does not change EVE acceptance or confidence.
For a batch containing both supported and oversized proteins, the sequence
E-value search-space parameter Z counts all distinct selected proteins,
including those not searched. Excluded proteins contribute to this count
but have no HMM comparison.
The profile gathering thresholds still use sequence and domain scores.
complete describes coverage of this screen's selected predicted proteins;
it does not certify gene prediction completeness or biological absence of
an integration mechanism.
| Pfam profile | Reported function |
|---|---|
| PF00589.28, Phage_integrase | Tyrosine recombinase |
| PF00239.27, Resolvase | Serine recombinase |
| PF00665.33, rve | DDE integrase domain |
| PF13333.13, rve_2 | DDE integrase domain |
| PF13683.13, rve_3 | DDE integrase domain |
The software includes profile accessions, source URLs, the CC0 license and
checksums in virosync/data/integration_profiles.json. The run fingerprint
covers both this manifest and the profiles. Existing marker annotations and
optional InterProScan annotations retain their source. General repair/recombination
proteins such as YqaJ are labelled separately from site-specific recombinases.
Integration-gene annotations do not seed EVEs. Catalogue-mapped interior hits
can contribute compatible context to the graduated hallmark score when core
evidence is present; flanking hits cannot contribute.
A domain match predicts a protein family. It does not establish catalytic activity, identify the enzyme that caused an insertion, or distinguish a viral element from a transposon. Flanking host genes are labelled by location. Repeat matches can also arise within host repeat families. Use the reported search scope and ambiguity status when interpreting a pair.
Direct-repeat assessment¶
Direct-repeat evidence is recorded by default for genome candidates. The screen
uses unmasked host sequence around the endpoints assessed in Phase 2. The
phase1.extension_kb setting supplies the requested radius, 5 kb by default;
the method caps it at 10,000 bases. Scaffold ends and contiguous Phase-2
taxonomy coverage clip each window. The JSON endpoint assessments record both
the requested and searched windows, reasons for limits, and ambiguous-base
counts. A pair can be present when assessment is incomplete.
The inward half of each window stops at the input interval midpoint, so a pair
spans the two endpoint neighborhoods. midpoint_partition records this method
constraint and permits a completed assessment when no other limit applies.
The method uses exact forward seeds and ungapped alignments. Both arms must
pass the TIR left-arm complexity filter. The
recorded repeat_search_parameters are:
| Parameter | Value |
|---|---|
method |
forward-7mer-ungapped-score-v1 |
seed_bp |
7 bp |
min_arm_bp |
50 bp |
min_identity |
0.90 |
min_seed_entropy_bits |
1.2 bits |
max_seed_chain_bp |
493 bp between consecutive seed starts |
max_window_radius_bp |
10,000 bp per endpoint |
max_seed_pairings |
65,536 |
max_diagonals |
8,192 |
max_candidates |
128 retained pairs per assessment |
Seeds with fewer left–right occurrence combinations are searched first.
Overlapping arms and low-complexity arms are excluded, with counts retained in
repeat_filter_counts. These thresholds have not been calibrated as universal
biological cutoffs. Diverged or indel-rich repeats can be missed. Repeat absence
does not lower confidence or exclude a degraded EVE.
| Endpoint status | Meaning |
|---|---|
completed |
The recorded method completed within its defined endpoint window, without a limiting reason. Zero pairs means no qualifying pair was retained under that search. |
incomplete |
A window, sequence, partner, or search limit prevented a complete assessment. Retained pairs remain available. |
not_assessed |
No usable assessment exists at that endpoint, including missing sequence or coverage, or an endpoint changed after assessment. |
| Recorded reasons | Interpretation |
|---|---|
missing_sequence, missing_coverage |
Host sequence or a contiguous taxonomy-covered window is unavailable. |
contig_clipped, taxonomy_clipped, window_limit |
A scaffold end, taxonomy coverage, or radius cap reduced the requested window. |
insufficient_window, insufficient_paired_window, partner_unavailable |
One or both endpoints lack enough searchable sequence for paired arms. |
ambiguous_bases, low_complexity |
Sequence content limits the assessment. Ambiguous bases are not bridged as ordinary mismatches. |
seed_pairing_limit, diagonal_limit, candidate_limit |
The corresponding cap limited the search or retained alternatives. |
endpoint_changed |
The final endpoint differs from the assessed endpoint. |
midpoint_partition |
The defined inward-window split; this reason alone permits completed. |
The repeat-pair sidecar lists the retained alternatives. Its
outer and inner intervals record the unresolved choice between viral terminal
repeats and duplicated host sequence. They are geometric alternatives, not
statistical confidence intervals or inferred attachment sites.
The interpretation remains unresolved; host repeats, terminal viral repeats
and nested elements can produce the same geometry. The
direct_repeat_display_id selects a representative for display, not a boundary.
Direct-repeat evidence does not alter accepted coordinates, gene membership,
identifiers, classes or confidence tiers.
Short-flank assessment¶
Short-flank assessment uses the exact 3–9-base comparison at retained TIR
termini. The long direct-repeat pairs do not supply these anchors.
tsd_anchor_start and tsd_anchor_end identify the assessed TIR interval.
tsd_assessment_status |
Meaning |
|---|---|
assessed_match |
An eligible exact short match was found at the retained TIR anchors. |
assessed_no_match |
The flanks were assessed and no eligible match was found. |
incomplete |
Clipping or ambiguous bases limit one or both flanks; inspect the per-end reasons and any retained sequence. |
not_assessed_no_anchor |
No retained TIR anchor pair was available. |
not_assessed_endpoint_changed |
A candidate endpoint changed after the source assessment. |
not_assessed |
No repeat-evidence record exists; anchor absence is not established. |
The tsd_assessment JSON retains the anchor source, matched sequence, per-end
reasons and a local shifted-anchor diagnostic. The diagnostic translates both
termini together by each nonzero integer offset from −20 to +20 bases, excluding
clipped or ambiguous controls. null_assessed counts the usable offsets and
null_matches counts those with a qualifying short match.
These correlated comparisons summarize local matching frequency; they do not
estimate independent boundary accuracy or a calibrated chance probability.
Joint rescue reassesses repeat evidence on its fixed hull. At retained TIR anchors,
the matched sequence agrees with tsd_sequence.
Interpreting integration signatures¶
TIRs can identify the ends of a complete linear viral element. Host sequence outside both ends is needed to establish an integrated context. TIRs also occur in virophage genomes for which integration has not been demonstrated (Yutin et al., 2015).
An exact short direct repeat immediately outside the TIRs can be a target-site
duplication (TSD). Experimentally integrated mavirus has 5–6 bp TSDs
(Fischer and Hackl, 2016). The
tsd_sequence field reports the longest exact 3–9 bp match immediately outside
the retained TIR pair. It excludes ambiguous bases and homopolymers. This is a
candidate duplication, not proof of insertion; short matches can occur by chance.
Tyrosine-recombinase integration can produce matching attachment-site cores with different lengths and positions from DDE-associated TSDs. Absence of a TSD does not exclude that mechanism (Bulzu et al., 2025).
Additional evidence to inspect outside ViroSync includes reads spanning both host–virus junctions, an orthologous empty host locus, and insertion differences between strains. Reverse-transcriptase and RNase H genes can help identify a nested retrotransposon as the source of an integrase. Nested retrotransposons occur in endogenous mavirus-like elements (Hackl et al., 2021). ViroSync does not currently test junction reads, empty loci, attachment sites or retrotransposon domain architecture. Short junction microhomology alone should not determine an integration mechanism.
Supplementary viral module¶
The supplementary module runs for every candidate that reaches confidence
scoring. It reads the retained full-ORF
genome-database taxonomy after the final coordinates are fixed. It requires the
existing LOW and MEDIUM class resolvers to agree on NCLDV or MIRUS, then at
least three nonoverlapping, fully contained physical genes supporting that exact
reference prefix. Evidence-only family inference runs before scoring so both
resolvers see the final family. Each gene needs a retained hit
with identity >=25%, E <=1e-5 and query coverage per HSP >=50%, with bitscore
strictly above every retained non-organelle EUK/BAC/ARC hit. These competitors
are not filtered by identity, E-value or coverage. A missing non-organelle
cellular hit is recorded separately from a measured advantage. These are fixed
criteria, not calibrated cutoffs or evidence of integration.
Recognized MITO/PLASTID labels or exact MITO__/PLASTID__ target prefixes are
organelle ambiguity evidence first. They supply neither a viral witness nor a
non-organelle cellular comparator. Qualifying viral top10 hits remain eligible
despite stronger organelle hits; no close-score cutoff is used. Selected
evidence exports organelle targets, scores and the relation to its supporting
viral score (absent, viral-higher, tied or organelle-higher). Missing
non-organelle comparators never count as measured wins. Organelle ambiguity can
coexist with a measured non-organelle win. Unrelated UNKNOWN targets and native
boundary taxonomy remain unchanged.
Exact physical duplicates count once, opposite-strand overlaps cannot both count, and abutting half-open intervals can. Sorting by gene end gives the maximum nonoverlapping set separately for each prefix. NCLDV and MIRUS counts are never added. A second independent selection using only non-organelle measured comparisons retains its own organelle ambiguity evidence and records whether eligibility depends on genes without a retained non-organelle cellular comparator. Missing or misaligned coverage for nonempty retained-hit arrays is an error; an empty no-hit record remains valid.
One immutable, interval-bound supplementary record supplies both scoring and the output gate, including selected genes, subject IDs, prefix counts and the eligibility reason. Eligible modules skip only the zero-core ceiling below MEDIUM. They do not change weighted components, bonuses, penalties or floors; the separate fewer-than-two-core ceiling below HIGH still applies before the existing floors. In the NCLDV/MIRUS LOW gate, an eligible module is an alternative to two legacy hallmarks, still requiring length >5,000 bp. A module with a score below 0.2 therefore remains LOW. The gate fails if its stored interval no longer matches the result. Class-switching and ambiguous cases retain baseline policy.
Gene-taxonomy records and the Phase 2 resume state retain DIAMOND qcovhsp
percentages, aligned by rank. These are measured alignment coverages, not
reconstructed from identities or annotation labels. No-hit records carry empty
arrays. The Phase 2 resume schema requires this field; older checkpoints are not
given coverage.
Cached full-pORF hits and the native region search carry the same coverage.
Physical scaffold, start and end come from the parsed proteome header and region
mapping; query coverage comes only from measured GeneDiamondHit.qcov values.
Bounded joint assessment of rejected seeds¶
After ordinary Phase 3 scoring, one nonrecursive pass may assess disjoint,
adjacent rejected LOW candidates of the same effective NCLDV or MIRUS class.
Their stored flank_start_bp/flank_end_bp taxonomy-search envelopes must
overlap, every overlapping ORF
in the joint hull must have been queried, and all original confirmed seed
objects remain intact. A missing or empty host model or ambiguous/missing DNA
in the inter-core gap prevents rescue. Recorded host stops and three consecutive
host-positive genes between the candidates, without qualifying viral support, block
a pair. A third
seed or accepted-call conflict blocks rescue. After full native reassessment,
all passing proposals that share a child with another passing proposal are
discarded. Unsupported neighbors do not block an otherwise eligible proposal.
The supplementary module must select three independent physical
genes, with at least one selected gene wholly inside each child's original
confirmed cores. Only then may this assessment cross a support gap. Two
separately supported multi-marker groups remain separate: both children must
retain a native capsid_partner_5kb or three_core_15kb witness matching their
effective panel to trigger this veto. Native distinct-marker and distinct-locus
requirements apply; a duplicated single hallmark or lone capsid does not suffice.
The native terminal inverted-repeat detector scans raw sequence across the hull and its configured Phase 1 context (5 kb by default), clipped to the contig. A pair bracketing one child's validated marker evidence, excluding the other, with an endpoint between their validated marker spans blocks rescue. This endpoint may fall in padded core sequence; the veto never trims a core. A pair enclosing the whole hull does not. A missing, failed or pairing-capped scan blocks rescue.
Joint coordinates receive native classification, composition, repeat evidence,
annotation, and verification again. Rejected children are replaced only when the
joint result passes the per-candidate active native acceptance selection, including
rescue-marker containment, and the joint supplementary check. Third-candidate
overlap exclusion and noncompeting fixed hulls prevent arbitration conflicts.
A rejected joint leaves its ordinary children intact.
The complete confirmed seeds and JSON joint_seed_provenance retain child
coordinates, stop reasons, original score, tier and effective class in final
profiles and the detailed table. Boundary serialization retains proposal
provenance and all cores; Phase 3 derives proposals again from ordinary
boundaries on an authorized resume.
Other candidates retain ordinary scoring. Changed source requires a fresh native
run; old completion fingerprints do not authorize reuse.