1 /* @include ensqcsequence ***************************************************** 2 ** 3 ** Ensembl Quality Check Sequence functions 4 ** 5 ** @author Copyright (C) 1999 Ensembl Developers 6 ** @author Copyright (C) 2006 Michael K. Schuster 7 ** @version $Revision: 1.17 $ 8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core 9 ** @modified $Date: 2012/02/04 10:30:24 $ by $Author: mks $ 10 ** @@ 11 ** 12 ** This library is free software; you can redistribute it and/or 13 ** modify it under the terms of the GNU Lesser General Public 14 ** License as published by the Free Software Foundation; either 15 ** version 2.1 of the License, or (at your option) any later version. 16 ** 17 ** This library is distributed in the hope that it will be useful, 18 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 19 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 20 ** Lesser General Public License for more details. 21 ** 22 ** You should have received a copy of the GNU Lesser General Public 23 ** License along with this library; if not, write to the Free Software 24 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 25 ** MA 02110-1301, USA. 26 ** 27 ******************************************************************************/ 28 29 #ifndef ENSQCSEQUENCE_H 30 #define ENSQCSEQUENCE_H 31 32 /* ========================================================================= */ 33 /* ============================= include files ============================= */ 34 /* ========================================================================= */ 35 36 #include "ensqcdatabase.h" 37 38 AJ_BEGIN_DECLS 39 40 41 42 43 /* ========================================================================= */ 44 /* =============================== constants =============================== */ 45 /* ========================================================================= */ 46 47 48 49 50 /* ========================================================================= */ 51 /* ============================== public data ============================== */ 52 /* ========================================================================= */ 53 54 /* @data EnsPQcsequenceadaptor ************************************************ 55 ** 56 ** Ensembl Quality Check Sequence Adaptor 57 ** 58 ** @alias EnsSQcsequenceadaptor 59 ** @alias EnsOQcsequenceadaptor 60 ** 61 ** @attr Adaptor [EnsPBaseadaptor] Ensembl Base Adaptor 62 ** @attr CacheByIdentifier [AjPTable] Identifier cache 63 ** @attr CacheByName [AjPTable] Name cache 64 ** @@ 65 ** TODO: Should this also have a CacheByAccessionVersion??? 66 ******************************************************************************/ 67 68 typedef struct EnsSQcsequenceadaptor 69 { 70 EnsPBaseadaptor Adaptor; 71 AjPTable CacheByIdentifier; 72 AjPTable CacheByName; 73 } EnsOQcsequenceadaptor; 74 75 #define EnsPQcsequenceadaptor EnsOQcsequenceadaptor* 76 77 78 79 80 /* @data EnsPQcsequence ******************************************************* 81 ** 82 ** Ensembl Quality Check Sequence 83 ** 84 ** @alias EnsSQcsequence 85 ** @alias EnsOQcsequence 86 ** 87 ** @attr Use [ajuint] Use counter 88 ** @cc Bio::EnsEMBL::Storable 89 ** @attr Identifier [ajuint] SQL database-internal identifier 90 ** @attr Adaptor [EnsPQcsequenceadaptor] Ensembl Sequence Adaptor 91 ** @cc Bio::EnsEMBL::QC::Sequence 92 ** @cc 'sequence' SQL table 93 ** @attr Qcdatabase [EnsPQcdatabase] Ensembl Quality Check Database 94 ** @attr Name [AjPStr] Name 95 ** @attr Accession [AjPStr] Accession 96 ** @attr Description [AjPStr] Description 97 ** @attr Type [AjPStr] Type 98 ** @attr Version [ajuint] Version 99 ** @attr Length [ajuint] Length 100 ** @attr CdsStart [ajuint] Coding sequence start 101 ** @attr CdsEnd [ajuint] Coding sequence end 102 ** @attr CdsStrand [ajint] Coding sequence strand 103 ** @attr Polya [ajuint] Poly A+ tail length 104 ** @@ 105 ******************************************************************************/ 106 107 typedef struct EnsSQcsequence 108 { 109 ajuint Use; 110 ajuint Identifier; 111 EnsPQcsequenceadaptor Adaptor; 112 EnsPQcdatabase Qcdatabase; 113 AjPStr Name; 114 AjPStr Accession; 115 AjPStr Description; 116 AjPStr Type; 117 ajuint Version; 118 ajuint Length; 119 ajuint CdsStart; 120 ajuint CdsEnd; 121 ajint CdsStrand; 122 ajuint Polya; 123 } EnsOQcsequence; 124 125 #define EnsPQcsequence EnsOQcsequence* 126 127 128 129 130 /* ========================================================================= */ 131 /* =========================== public functions ============================ */ 132 /* ========================================================================= */ 133 134 /* 135 ** Prototype definitions 136 */ 137 138 /* Ensembl Quality Check Sequence */ 139 140 EnsPQcsequence ensQcsequenceNewCpy(const EnsPQcsequence qcs); 141 142 EnsPQcsequence ensQcsequenceNewIni(EnsPQcsequenceadaptor adaptor, 143 ajuint identifier, 144 EnsPQcdatabase qcdb, 145 AjPStr name, 146 AjPStr accession, 147 ajuint version, 148 AjPStr type, 149 ajuint length, 150 ajuint cdsstart, 151 ajuint cdsend, 152 ajint cdsstrand, 153 ajuint polya, 154 AjPStr description); 155 156 EnsPQcsequence ensQcsequenceNewRef(EnsPQcsequence qcs); 157 158 void ensQcsequenceDel(EnsPQcsequence *Pqcs); 159 160 AjPStr ensQcsequenceGetAccession(const EnsPQcsequence qcs); 161 162 EnsPQcsequenceadaptor ensQcsequenceGetAdaptor(const EnsPQcsequence qcs); 163 164 ajuint ensQcsequenceGetCdsEnd(const EnsPQcsequence qcs); 165 166 ajuint ensQcsequenceGetCdsStart(const EnsPQcsequence qcs); 167 168 ajint ensQcsequenceGetCdsStrand(const EnsPQcsequence qcs); 169 170 AjPStr ensQcsequenceGetDescription(const EnsPQcsequence qcs); 171 172 ajuint ensQcsequenceGetIdentifier(const EnsPQcsequence qcs); 173 174 ajuint ensQcsequenceGetLength(const EnsPQcsequence qcs); 175 176 AjPStr ensQcsequenceGetName(const EnsPQcsequence qcs); 177 178 ajuint ensQcsequenceGetPolya(const EnsPQcsequence qcs); 179 180 EnsPQcdatabase ensQcsequenceGetQcdatabase(const EnsPQcsequence qcs); 181 182 AjPStr ensQcsequenceGetType(const EnsPQcsequence qcs); 183 184 ajuint ensQcsequenceGetVersion(const EnsPQcsequence qcs); 185 186 AjBool ensQcsequenceSetAdaptor(EnsPQcsequence qcs, EnsPQcsequenceadaptor qcsa); 187 188 AjBool ensQcsequenceSetIdentifier(EnsPQcsequence qcs, ajuint identifier); 189 190 AjBool ensQcsequenceSetQcdatabase(EnsPQcsequence qcs, EnsPQcdatabase qcdb); 191 192 AjBool ensQcsequenceSetName(EnsPQcsequence qcs, AjPStr name); 193 194 AjBool ensQcsequenceSetAccession(EnsPQcsequence qcs, AjPStr accession); 195 196 AjBool ensQcsequenceSetVersion(EnsPQcsequence qcs, ajuint version); 197 198 AjBool ensQcsequenceSetType(EnsPQcsequence qcs, AjPStr type); 199 200 AjBool ensQcsequenceSetLength(EnsPQcsequence qcs, ajuint length); 201 202 AjBool ensQcsequenceSetCdsStart(EnsPQcsequence qcs, ajuint cdsstart); 203 204 AjBool ensQcsequenceSetCdsEnd(EnsPQcsequence qcs, ajuint cdsend); 205 206 AjBool ensQcsequenceSetCdsStrand(EnsPQcsequence qcs, ajint cdsstrand); 207 208 AjBool ensQcsequenceSetPolya(EnsPQcsequence qcs, ajuint polya); 209 210 AjBool ensQcsequenceSetDescription(EnsPQcsequence qcs, AjPStr description); 211 212 AjBool ensQcsequenceTrace(const EnsPQcsequence qcs, ajuint level); 213 214 size_t ensQcsequenceCalculateMemsize(const EnsPQcsequence qcs); 215 216 ajuint ensQcsequenceGetQcdatabaseIdentifier(const EnsPQcsequence qcs); 217 218 AjBool ensQcsequenceMatch(const EnsPQcsequence qcs1, 219 const EnsPQcsequence qcs2); 220 221 AjBool ensQcsequenceFetchAnchorExternal(const EnsPQcsequence qcs, 222 AjBool htmlid, 223 AjPStr *Pstr); 224 225 AjBool ensQcsequenceFetchAnchorInternal(const EnsPQcsequence qcs, 226 AjPStr *Pstr); 227 228 AjBool ensQcsequenceFetchUrlExternal(const EnsPQcsequence qcs, AjPStr *Pstr); 229 230 AjBool ensHtmlEncodeEntities(AjPStr *Pstr); 231 232 AjBool ensHtmlEncodeSgmlid(AjPStr *Pstr); 233 234 /* Ensembl Quality Check Sequence Adaptor */ 235 236 EnsPQcsequenceadaptor ensRegistryGetQcsequenceadaptor( 237 EnsPDatabaseadaptor dba); 238 239 EnsPQcsequenceadaptor ensQcsequenceadaptorNew( 240 EnsPDatabaseadaptor dba); 241 242 void ensQcsequenceadaptorDel(EnsPQcsequenceadaptor *Pqcsa); 243 244 EnsPBaseadaptor ensQcsequenceadaptorGetBaseadaptor( 245 EnsPQcsequenceadaptor qcsa); 246 247 EnsPDatabaseadaptor ensQcsequenceadaptorGetDatabaseadaptor( 248 EnsPQcsequenceadaptor qcsa); 249 250 AjBool ensQcsequenceadaptorFetchByAccession(EnsPQcsequenceadaptor qcsa, 251 ajuint qcdbid, 252 const AjPStr accession, 253 ajuint version, 254 EnsPQcsequence *Pqcs); 255 256 AjBool ensQcsequenceadaptorFetchByIdentifier(EnsPQcsequenceadaptor adaptor, 257 ajuint identifier, 258 EnsPQcsequence *Pqcs); 259 260 AjBool ensQcsequenceadaptorFetchByName(EnsPQcsequenceadaptor qcsa, 261 ajuint qcdbid, 262 const AjPStr name, 263 EnsPQcsequence *Pqcs); 264 265 AjBool ensQcsequenceadaptorFetchAllbyQcdatabase(EnsPQcsequenceadaptor qcsa, 266 const EnsPQcdatabase qcdb, 267 AjPList qcss); 268 269 AjBool ensQcsequenceadaptorStore(EnsPQcsequenceadaptor qcsa, 270 EnsPQcsequence qcs); 271 272 AjBool ensQcsequenceadaptorDelete(EnsPQcsequenceadaptor qcsa, 273 EnsPQcsequence qcs); 274 275 AjBool ensQcsequenceadaptorUpdate(EnsPQcsequenceadaptor qcsa, 276 const EnsPQcsequence qcs); 277 278 279 /* 280 ** End of prototype definitions 281 */ 282 283 284 285 286 AJ_END_DECLS 287 288 #endif /* !ENSQCSEQUENCE_H */ 289