<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Creating a SequenceVariant from scratch
0. Overview
A SequenceVariant consists of an accession (a string), a sequence type (a string), and a PosEdit, like this
Step1:  2. Make an edit object
Step2:  3. Make the variant
Step3:  Important
<ASSISTANT_TASK:>
Python Code:
import hgvs.location
import hgvs.posedit
start = hgvs.location.BaseOffsetPosition(base=200,offset=-6,datum=hgvs.location.Datum.CDS_START)
start, str(start)
end = hgvs.location.BaseOffsetPosition(base=22,datum=hgvs.location.Datum.CDS_END)
end, str(end)
iv = hgvs.location.Interval(start=start,end=end)
iv, str(iv)
Explanation: Creating a SequenceVariant from scratch
0. Overview
A SequenceVariant consists of an accession (a string), a sequence type (a string), and a PosEdit, like this:
var = hgvs.sequencevariant.SequenceVariant(ac='NM_01234.5', type='c', posedit=...)
Unsurprisingly, a PosEdit consists of separate position and Edit objects.
A position is generally an Interval, which in turn is comprised of SimplePosition or BaseOffsetPosition objects. An edit is a subclass of Edit, which includes classes like NARefAlt for substitutions, deletions, and insertions) and Dup (for duplications).
Importantly, each of the objects we're building has a rule in the parser, which means that you have the tools to serialize and deserialize (parse) each of the components that we're about to construct.
1. Make an Interval to defined a position of the edit
End of explanation
import hgvs.edit, hgvs.posedit
edit = hgvs.edit.NARefAlt(ref='A',alt='T')
edit, str(edit)
posedit = hgvs.posedit.PosEdit(pos=iv,edit=edit)
posedit, str(posedit)
Explanation: 2. Make an edit object
End of explanation
import hgvs.sequencevariant
var = hgvs.sequencevariant.SequenceVariant(ac='NM_01234.5', type='c', posedit=posedit)
var, str(var)
Explanation: 3. Make the variant
End of explanation
import copy
var2 = copy.deepcopy(var)
var2.posedit.pos.start.base=456
str(var2)
var2 = copy.deepcopy(var)
var2.posedit.edit.alt='CT'
str(var2)
var2 = copy.deepcopy(var)
str(var2)
Explanation: Important: It is possible to bogus variants with the hgvs package. For example, the above interval is incompatible with a SNV. See hgvs.validator.Validator for validation options.
4. Update your variant
The stringification happens on-the-fly. That means that you can update components of the variant and see the effects immediately.
End of explanation
<END_TASK>