src/objects/varrep/varrep.asn

Go to the SVN repository for this file
Go to list of all specification files

NCBI-VariationIRep DEFINITIONS AUTOMATIC TAGS ::=
BEGIN 


--EXPORTS VariantExpression, SimpleVariant;

VariantExpression ::= SEQUENCE {
    input-expr VisibleString, -- contains the input expression to be parsed
    reference-id VisibleString, -- contains the accession id or other identifier for the reference sequence
    sequence-variant SequenceVariant
}


SequenceVariant ::= SEQUENCE {
    seqtype VariantSeqType,
    subvariants SEQUENCE OF Variant,
    complex INTEGER {
        mosaic  (1), 
        chimera (2)
    } OPTIONAL
}


Variant ::= CHOICE {
    simple SimpleVariant, 
    special SpecialVariant
}


VariantSeqType ::= INTEGER {
    g (0), --genomic
    m (1), --mitochondrial
    c (2), --coding
    r (3), --rna
    n (4), --non-coding rna
    p (5), --protein
    u (6)  --unknown
}


SpecialVariant ::= INTEGER { 
    unknown            (0), -- ?
    not-analyzed       (1), -- (?) Not sure about this
    nochange           (2), -- =
    nochange-expected  (3), -- (=)
    noseq              (4), -- 0
    noseq-expected     (5), -- 0?
    splice-expected    (6), -- spl?
    splice-possible    (7)  -- (spl?) 
}


-- SimpleVarSeq is deprecated and should go
SimpleVariantSeq ::= SEQUENCE { 
    variants SEQUENCE OF SimpleVariant,  
    sisters BOOLEAN DEFAULT FALSE,
    fuzzy BOOLEAN DEFAULT FALSE
}


SimpleVariant ::= SEQUENCE {
    type  CHOICE {
        na-identity NaIdentity,
        na-sub NaSub,
        prot-sub ProteinSub,
        prot-silent AaLocation,
        del Deletion,
        dup Duplication,
        inv Inversion,
        ins Insertion,
        conv Conversion,
        delins Delins,
        repeat Repeat, --short-sequence repeat (ssr)
        prot-ext ProteinExtension,
        frameshift Frameshift
    },
    fuzzy BOOLEAN DEFAULT FALSE
}


Delins ::= SEQUENCE {
    loc SeqLocation,
    deleted-raw-seq VisibleString OPTIONAL, -- can optionally specify the deleted sequence
    inserted-seq-info CHOICE {
        identifier VisibleString, -- A sequence identifier (e.g. an accession id)
        raw-seq VisibleString, -- The actual nucleotide / amino-acid sequence
        count Count, -- The number of elements inserted
        subseq Subsequence -- A subsequence specified by an id, type descriptor, and a range
    }
}


NaSub ::= SEQUENCE {
    loc NtLocation,
    initial VisibleString,
    final VisibleString
}

NaIdentity ::= SEQUENCE {
    loc NtLocation,
    nucleotide VisibleString OPTIONAL
}


ProteinSub ::= SEQUENCE {
    type INTEGER {
        missense(0),
        nonsense(1),
        unknown(2)
    },
    initial AaSite,
    final VisibleString OPTIONAL
}


ProteinExtension ::= CHOICE {
    nterm-ext NtermExtension,
    cterm-ext CtermExtension
}


NtermExtension ::= SEQUENCE {
    newStart Count,
    newAa VisibleString OPTIONAL
}


CtermExtension ::= SEQUENCE {
    refStop INTEGER, 
    newAa VisibleString,
    length Count 
}


Frameshift ::= CHOICE {
    aasite AaSite,
    stopcodon NULL
}


Deletion ::= SEQUENCE { 
    loc SeqLocation,
    raw-seq VisibleString OPTIONAL -- can optionally specify the deleted sequence
}


Duplication ::= SEQUENCE {
    loc SeqLocation,
    raw-seq VisibleString OPTIONAL -- can optionally specify the sequence duplicated sequence
}


Inversion ::= SEQUENCE {
    ntint NtInterval,
    raw-seq VisibleString OPTIONAL,
    size  INTEGER OPTIONAL -- optionall specify the size of the inverted sequence
}


Insertion ::= SEQUENCE {
    int SeqInterval,

    seqinfo CHOICE {
        identifier VisibleString, -- A sequence identifier (e.g. an accession id)
        raw-seq VisibleString, -- The actual nucleotide / amino-acid sequence
        count Count, -- The number of elements inserted
        subseq Subsequence -- A subsequence specified by an id, type descriptor, and a range
    }
}


Conversion ::= SEQUENCE {
    loc NtLocation,
    origin NtLocation
}


Subsequence ::= SEQUENCE {
    identifier VisibleString, -- For example, an accession id
    type VariantSeqType,
    int SeqInterval
}


Repeat ::= SEQUENCE {
    loc SeqLocation,
    count Count,
    raw-seq VisibleString OPTIONAL --Used if ntloc is a site, not an interval
}


SeqLocation ::= CHOICE {
    aaloc AaLocation,
    ntloc NtLocation
}

SeqInterval ::= CHOICE {
    aaint AaInterval,
    ntint NtInterval
}


AaLocation ::= CHOICE {
    site AaSite,
    range AaSiteRange,
    int AaInterval
}


AaInterval ::= SEQUENCE {
    start AaSite,
    stop AaSite
}


AaSiteRange ::= SEQUENCE {
    start AaSite,
    stop  AaSite
}


    AaSite ::= SEQUENCE {
        index INTEGER,
        aa VisibleString
    }


    NtLocation ::= CHOICE {
        site NtSite,
        range NtSiteRange,
        int NtInterval
    }


    NtIntLimit ::= CHOICE {
        site NtSite,
        range NtSiteRange
    }

    NtInterval ::= SEQUENCE {
        start NtIntLimit,
        stop NtIntLimit
    }


    NtSiteRange ::= SEQUENCE {
        start NtSite,
        stop  NtSite
    }


    NtSite ::= SEQUENCE {
        seqid VisibleString OPTIONAL,
        seqtype VariantSeqType OPTIONAL,

        base CHOICE {
            val INTEGER,
            unknown NULL 
        },

        offset CHOICE {
            val INTEGER,
            plus-unknown NULL,
            minus-unknown NULL
        } OPTIONAL,

        utr CHOICE {
            five-prime NULL,
            three-prime NULL
        } OPTIONAL,


        strand-minus BOOLEAN DEFAULT FALSE, -- TRUE implies opposite transcriptional orientation to 
                                                -- to the reference sequence
        fuzzy BOOLEAN DEFAULT FALSE, -- TRUE implies HGVS subexpression of the form (base + offset),
        fuzzy-offset BOOLEAN DEFAULT FALSE -- TRUE implies HGVS subexpression of the form base+(offset)
    }


    Count ::= CHOICE {
        unknown NULL,
        val INTEGER,
        fuzzy-val INTEGER,
        range SEQUENCE { 
            start CHOICE {
                val INTEGER,
                unknown NULL   
            },
            stop CHOICE {
                val INTEGER,
                unknown NULL
            }
        }
    }

    END