github.com/biogo/biogo@v1.0.4/seq/annotation.go (about) 1 // Copyright ©2011-2013 The bíogo Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package seq 6 7 import ( 8 "github.com/biogo/biogo/alphabet" 9 "github.com/biogo/biogo/feat" 10 ) 11 12 // Strand stores linear sequence strand information. 13 type Strand int8 14 15 const ( 16 Minus Strand = iota - 1 17 None 18 Plus 19 ) 20 21 func (s Strand) String() string { 22 switch s { 23 case Plus: 24 return "+" 25 case None: 26 return "." 27 case Minus: 28 return "-" 29 } 30 return "undefined" 31 } 32 33 // An Annotation is a basic linear sequence annotation type. 34 type Annotation struct { 35 ID string 36 Desc string 37 Loc feat.Feature 38 Strand Strand 39 Conform feat.Conformation 40 Alpha alphabet.Alphabet 41 Offset int 42 } 43 44 // Name returns the ID string of the sequence. 45 func (a *Annotation) Name() string { return a.ID } 46 47 // SetName sets the ID string of the sequence. 48 func (a *Annotation) SetName(id string) error { a.ID = id; return nil } 49 50 // Description returns the Desc string of the sequence. 51 func (a *Annotation) Description() string { return a.Desc } 52 53 // SetDescription sets the Desc string of the sequence. 54 func (a *Annotation) SetDescription(d string) error { a.Desc = d; return nil } 55 56 // Conformation returns the sequence conformation. 57 func (a *Annotation) Conformation() feat.Conformation { return a.Conform } 58 59 // SetConformation sets the sequence conformation. 60 func (a *Annotation) SetConformation(c feat.Conformation) error { a.Conform = c; return nil } 61 62 // Orientation returns the sequence's strand as a feat.Orientation. 63 func (a *Annotation) Orientation() feat.Orientation { return feat.Orientation(a.Strand) } 64 65 // SetOrientation sets the sequence'a strand from a feat.Orientation. 66 func (a *Annotation) SetOrientation(o feat.Orientation) error { a.Strand = Strand(o); return nil } 67 68 // Location returns the Loc field of the sequence. 69 func (a *Annotation) Location() feat.Feature { return a.Loc } 70 71 // SetLocation sets the Loc field of the sequence. 72 func (a *Annotation) SetLocation(f feat.Feature) error { a.Loc = f; return nil } 73 74 // Alphabet return the alphabet.Alphabet used by the sequence. 75 func (a *Annotation) Alphabet() alphabet.Alphabet { return a.Alpha } 76 77 // SetAlphabet the sets the alphabet.Alphabet used by the sequence. 78 func (a *Annotation) SetAlphabet(n alphabet.Alphabet) error { a.Alpha = n; return nil } 79 80 // SetOffset sets the global offset of the sequence to o. 81 func (a *Annotation) SetOffset(o int) error { a.Offset = o; return nil } 82 83 // Moltype returns the molecule type of the sequence. 84 func (a *Annotation) Moltype() feat.Moltype { return a.Alpha.Moltype() } 85 86 // CloneAnnotation returns a pointer to a copy of the receiver. 87 func (a *Annotation) CloneAnnotation() *Annotation { ca := *a; return &ca }