NCBI C Toolkit Cross Reference

C/api/asn2gnbi.h


  1 /*   asn2gnbi.h
  2 * ===========================================================================
  3 *
  4 *                            PUBLIC DOMAIN NOTICE
  5 *            National Center for Biotechnology Information (NCBI)
  6 *
  7 *  This software/database is a "United States Government Work" under the
  8 *  terms of the United States Copyright Act.  It was written as part of
  9 *  the author's official duties as a United States Government employee and
 10 *  thus cannot be copyrighted.  This software/database is freely available
 11 *  to the public for use. The National Library of Medicine and the U.S.
 12 *  Government do not place any restriction on its use or reproduction.
 13 *  We would, however, appreciate having the NCBI and the author cited in
 14 *  any work or product based on this material
 15 *
 16 *  Although all reasonable efforts have been taken to ensure the accuracy
 17 *  and reliability of the software and data, the NLM and the U.S.
 18 *  Government do not and cannot warrant the performance or results that
 19 *  may be obtained by using this software or data. The NLM and the U.S.
 20 *  Government disclaim all warranties, express or implied, including
 21 *  warranties of performance, merchantability or fitness for any particular
 22 *  purpose.
 23 *
 24 * ===========================================================================
 25 *
 26 * File Name:  asn2gnbi.h
 27 *
 28 * Author:  Karl Sirotkin, Tom Madden, Tatiana Tatusov, Jonathan Kans
 29 *
 30 * Version Creation Date:   12/30/03
 31 *
 32 * $Revision: 1.116 $
 33 *
 34 * File Description:  New GenBank flatfile generator, internal header
 35 *
 36 * Modifications:  
 37 * --------------------------------------------------------------------------
 38 * ==========================================================================
 39 */
 40 
 41 #ifndef _ASN2NGNBI_
 42 #define _ASN2NGNBI_
 43 
 44 #include <asn2gnbp.h>
 45 #include <explore.h>
 46 
 47 #undef NLM_EXTERN
 48 #ifdef NLM_IMPORT
 49 #define NLM_EXTERN NLM_IMPORT
 50 #else
 51 #define NLM_EXTERN extern
 52 #endif
 53 
 54 #ifdef __cplusplus
 55 extern "C" {
 56 #endif
 57 
 58 
 59 
 60 #define ASN2FF_EMBL_MAX 78
 61 #define ASN2FF_GB_MAX   79
 62 #define SEQID_MAX_LEN   41
 63 
 64 #define TILDE_IGNORE     0
 65 #define TILDE_TO_SPACES  1
 66 #define TILDE_EXPAND     2
 67 #define TILDE_OLD_EXPAND 3
 68 #define TILDE_SEMICOLON  4
 69 
 70 
 71 /* flags set by mode to customize behavior */
 72 
 73 typedef struct asn2gbflags {
 74   Boolean             suppressLocalID;
 75   Boolean             validateFeats;
 76   Boolean             ignorePatPubs;
 77   Boolean             dropShortAA;
 78   Boolean             avoidLocusColl;
 79   Boolean             iupacaaOnly;
 80   Boolean             dropBadCitGens;
 81   Boolean             noAffilOnUnpub;
 82   Boolean             dropIllegalQuals;
 83   Boolean             checkQualSyntax;
 84   Boolean             needRequiredQuals;
 85   Boolean             needOrganismQual;
 86   Boolean             needAtLeastOneRef;
 87   Boolean             citArtIsoJta;
 88   Boolean             dropBadDbxref;
 89   Boolean             useEmblMolType;
 90   Boolean             hideBankItComment;
 91   Boolean             checkCDSproductID;
 92   Boolean             suppressSegLoc;
 93   Boolean             srcQualsToNote;
 94   Boolean             hideEmptySource;
 95   Boolean             goQualsToNote;
 96   Boolean             separateGeneSyns;
 97   Boolean             refSeqQualsToNote;
 98   Boolean             selenocysteineToNote;
 99   Boolean             pyrrolysineToNote;
100   Boolean             extraProductsToNote;
101   Boolean             codonRecognizedToNote;
102   Boolean             hideSpecificGeneMaps;
103   Boolean             forGbRelease;
104 } Asn2gbFlags, PNTR Asn2gbFlagsPtr;
105 
106 /* internal Asn2gbSect structure has fields on top of Asn2gbSect fields */
107 
108 typedef struct int_Asn2gbSect {
109   Asn2gbSect  asp;
110 } IntAsn2gbSect, PNTR IntAsn2gbSectPtr;
111 
112 /* string structure */
113 
114 #define STRING_BUF_LEN  1024
115 
116 typedef struct stringitem {
117   struct stringitem  *curr;
118   struct stringitem  *next;
119   Pointer            iajp;
120   Char               buf [STRING_BUF_LEN];
121   Int4               pos;
122 } StringItem, PNTR StringItemPtr;
123 
124 /* internal asn2gbjob structure has fields on top of Asn2gbJob fields */
125 
126 typedef struct int_asn2gb_job {
127   Asn2gbJob       ajp;
128   FmtType         format;
129   ModType         mode;
130   Asn2gbFlags     flags;
131   Boolean         showFarTransl;
132   Boolean         transIfNoProd;
133   Boolean         alwaysTranslCds;
134   Boolean         showTranscript;
135   Boolean         showPeptide;
136   Boolean         hideTranslation;
137   Boolean         hideEvidence;
138   Boolean         masterStyle;
139   Boolean         newSourceOrg;
140   Boolean         produceInsdSeq;
141   Boolean         refseqConventions;
142   ValNodePtr      lockedBspList;
143   ValNodePtr      gapvnp;
144   ValNodePtr      remotevnp;
145   Asn2gbLockFunc  remotelock;
146   Asn2gbFreeFunc  remotefree;
147   Pointer         remotedata;
148   Boolean         relModeError;
149   Boolean         skipProts;
150   Boolean         skipMrnas;
151   IndxPtr         index;
152   GBSeqPtr        gbseq;
153   BlockMask       bkmask;
154   AsnIoPtr        aip;
155   AsnTypePtr      atp;
156   StringItemPtr   pool;
157   Boolean         www;
158   Boolean         specialGapFormat;
159   Boolean         hideGoTerms;
160   Boolean         multiIntervalGenes;
161   Boolean         reindex;
162   Int4            seqGapCurrLen;
163   ValNodePtr      gihead;
164   ValNodePtr      gitail;
165   TextFsaPtr      bad_html_fsa;
166 } IntAsn2gbJob, PNTR IntAsn2gbJobPtr;
167 
168 /* array for assigning biosource and feature data fields to qualifiers */
169 /* should be allocated to MAX (ASN2GNBK_TOTAL_SOURCE, ASN2GNBK_TOTAL_FEATUR) */
170 
171 typedef union qualval {
172   CharPtr              str;
173   Boolean              ble;
174   Int4                 num;
175   ValNodePtr           vnp;
176   GBQualPtr            gbq;
177   OrgModPtr            omp;
178   SubSourcePtr         ssp;
179   CodeBreakPtr         cbp;
180   SeqLocPtr            slp;
181   SeqIdPtr             sip;
182   tRNAPtr              trp;
183   UserObjectPtr        uop;
184   UserFieldPtr         ufp;
185   RNAGenPtr            rgp;
186   GeneNomenclaturePtr  gnp;
187   PCRReactionSetPtr    prp;
188 } QualVal, PNTR QualValPtr;
189 
190 /* structure passed to individual paragraph format functions */
191 
192 typedef struct asn2gbformat {
193   IntAsn2gbJobPtr  ajp;
194   Asn2gbSectPtr    asp;
195   QualValPtr       qvp;
196   FmtType          format;
197   Asn2gbWriteFunc  ffwrite;
198   Pointer          userdata;
199   FILE             *fp;
200   AsnIoPtr         aip;
201   AsnTypePtr       atp;
202 } Asn2gbFormat, PNTR Asn2gbFormatPtr;
203 
204 /* structure for bypassing unannotated WGS components in Web Entrez */
205 
206 typedef struct wgsaccn {
207   Char     accn [6];
208   Int2     count;
209   Boolean  hasfeats;
210 } WgsAccn, PNTR WgsAccnPtr;
211 
212 /* structure for storing working parameters while building asn2gb_job structure */
213 
214 typedef struct asn2gbwork {
215   IntAsn2gbJobPtr  ajp;
216   Uint2            entityID;
217 
218   FmtType          format;
219   ModType          mode;
220   StlType          style;
221 
222   ValNodePtr       pubhead;    /* for collecting publications */
223   ValNodePtr       srchead;    /* for collecting biosources */
224 
225   /* linked lists of paragraphs, sections, blocks */
226 
227   ValNodePtr       sectionList;
228   ValNodePtr       blockList;    /* reset for each new section */
229 
230   /* most recent node of linked lists, for quickly adding next node */
231 
232   ValNodePtr       lastsection;
233   ValNodePtr       lastblock;    /* reset for each new section */
234 
235   Int4             currsection;
236 
237   /* set if doing immediate write at time of creation for web speed */
238 
239   Asn2gbFormatPtr  afp;
240 
241   /* section fields needed for populating blocks */
242 
243   Asn2gbSectPtr    asp;
244 
245   BioseqPtr        target;
246   BioseqPtr        parent;
247   BioseqPtr        bsp;
248   BioseqPtr        refs;
249   SeqLocPtr        slp;
250   Uint2            seg;
251   Int4             numsegs;
252   Int4             partcount;
253   Int4             from;
254   Int4             to;
255 
256   Int2             sectionCount;
257   Int2             sectionMax;
258   Int4             currGi;
259   Int4             prevGi;
260   Int4             nextGi;
261   ValNodePtr       gilistpos;
262 
263   Boolean          showAllFeats;
264 
265   Boolean          contig;
266   Boolean          showconfeats;
267   Boolean          showconsource;
268   Boolean          smartconfeats;
269 
270   Boolean          onlyNearFeats;
271   Boolean          farFeatsSuppress;
272   Boolean          nearFeatsSuppress;
273 
274   Boolean          citSubsFirst;
275   Boolean          hideGeneFeats;
276   Boolean          newLocusLine;
277   Boolean          showBaseCount;
278   Boolean          forcePrimaryBlock;
279 
280   Boolean          showFeatStats;
281   Boolean          showRefStats;
282   Boolean          hideFeatures;
283   Boolean          hideImpFeats;
284   Boolean          hideVariations;
285   Boolean          hideRepeatRegions;
286   Boolean          hideSitesBondsRegions;
287   Boolean          hideCddFeats;
288   Boolean          hideCdsProdFeats;
289 
290   Boolean          hideGeneRIFs;
291   Boolean          onlyGeneRIFs;
292   Boolean          onlyReviewPubs;
293   Boolean          newestPubs;
294   Boolean          oldestPubs;
295   Boolean          hidePubs;
296 
297   Boolean          showFtableRefs;
298   Boolean          hideGaps;
299   Boolean          hideSources;
300   Boolean          hideSequence;
301 
302   Boolean          isGPS;
303   Boolean          copyGpsCdsUp;
304   Boolean          copyGpsGeneDown;
305 
306   Boolean          showContigAndSeq;
307 
308   Char             basename [SEQID_MAX_LEN];
309 
310   SeqFeatPtr       lastsfp;
311   SeqAnnotPtr      lastsap;
312   Int4             lastleft;
313   Int4             lastright;
314 
315   Boolean          firstfeat;
316   Boolean          featseen;
317   Boolean          featjustseen;
318   Int4             localFeatCount;
319   ValNodePtr       wgsaccnlist;
320 
321   Boolean          has_mat_peptide;
322   Boolean          has_sig_peptide;
323   Int2             sig_pept_trim_len;
324 
325   Boolean          farFeatTimeLimit;
326   time_t           farFeatStartTime;
327 
328   Boolean          sourcePubFuse;
329 
330   SeqSubmitPtr     ssp;
331   Boolean          hup;
332 
333   Boolean          failed;
334 } Asn2gbWork, PNTR Asn2gbWorkPtr;
335 
336 
337 /* Seq-hist replacedBy is preformatted into string field, */
338 /* then comment descriptors, Map location:, and Region:, */
339 /* then comment features, finally HTGS */
340 
341 typedef struct comment_block {
342   ASN2GB_BASE_BLOCK
343   Boolean           first;
344 } CommentBlock, PNTR CommentBlockPtr;
345 
346 /* internal reference block has fields on top of RefBlock fields */
347 
348 typedef struct int_ref_block {
349   RefBlock   rb;
350   DatePtr    date;     /* internal sorting use only */
351   SeqLocPtr  loc;      /* final location on target bioseq */
352   CharPtr    authstr;  /* author string */
353   Uint2      index;    /* index if feature on target bioseq */
354   Boolean    justuids; /* gibb pub with uids and Figure, etc. */
355   CharPtr    fig;      /* figure string from equivalent gibb pub */
356   CharPtr    maploc;   /* maploc string from equivalent gibb pub */
357   Boolean    poly_a;   /* poly_a field from equivalent gibb pub */
358   Int4       left;
359   Int4       right;
360 } IntRefBlock, PNTR IntRefBlockPtr;
361 
362 /* internal source block has fields on top of BaseBlock fields */
363 
364 typedef struct int_src_block {
365   BaseBlock         bb;
366   Boolean           is_descriptor;
367   Boolean           is_focus;
368   Boolean           is_synthetic;
369   BioSourcePtr      biop;
370   Uint4             orghash;
371   Uint4             modhash;
372   Uint4             subhash;
373   Uint4             xrfhash;
374   SeqLocPtr         loc;     /* final location on target bioseq */
375   CharPtr           taxname;
376   CharPtr           comment;
377   OrgModPtr         omp;
378   SubSourcePtr      ssp;
379   ValNodePtr        vnp;
380   Int4              left;
381   Int4              right;
382 } IntSrcBlock, PNTR IntSrcBlockPtr;
383 
384 /* internal feature block has fields on top of FeatBlock fields */
385 
386 typedef struct int_feat_block {
387   FeatBlock  fb;
388   Boolean     mapToNuc;
389   Boolean     mapToProt;
390   Boolean     mapToGen;
391   Boolean     mapToMrna;
392   Boolean     mapToPep;
393   Boolean     isCDS;     /* set if using IntCdsBlock */
394   Boolean     isPrt;     /* set if using IntPrtBlock */
395   Boolean     firstfeat;
396 } IntFeatBlock, PNTR IntFeatBlockPtr;
397 
398 /* internal cds block has fields on top of IntFeatBlock fields */
399 
400 typedef struct int_cds_block {
401   IntFeatBlock  ifb;
402   CharPtr       fig;    /* figure string from pub */
403   CharPtr       maploc; /* maploc string from pub */
404 } IntCdsBlock, PNTR IntCdsBlockPtr;
405 
406 /* internal protein block has fields on top of IntFeatBlock fields */
407 
408 typedef struct int_prt_block {
409   IntFeatBlock  ifb;
410   Boolean       is_whole_loc;
411   Boolean       suppress_mol_wt;
412   Boolean       trim_initial_met;
413   Int2          sig_pept_trim_len;
414 } IntPrtBlock, PNTR IntPrtBlockPtr;
415 
416 
417 /* enumerated qualifier category definitions */
418 
419 typedef enum {
420   Qual_class_ignore = 0,
421   Qual_class_string,
422   Qual_class_tilde,
423   Qual_class_sgml,
424   Qual_class_boolean,
425   Qual_class_int,
426   Qual_class_evidence,
427   Qual_class_exception,
428   Qual_class_valnode,
429   Qual_class_EC_valnode,
430   Qual_class_xtraprds,
431   Qual_class_quote,
432   Qual_class_EC_quote,
433   Qual_class_noquote,
434   Qual_class_label,
435   Qual_class_number,
436   Qual_class_paren,
437   Qual_class_usedin,
438   Qual_class_region,
439   Qual_class_replace,
440   Qual_class_consplice,
441   Qual_class_bond,
442   Qual_class_site,
443   Qual_class_L_R_B,
444   Qual_class_rpt,
445   Qual_class_organelle,
446   Qual_class_orgmod,
447   Qual_class_subsource,
448   Qual_class_code_break,
449   Qual_class_anti_codon,
450   Qual_class_codon,
451   Qual_class_compare,
452   Qual_class_method,
453   Qual_class_pubset,
454   Qual_class_db_xref,
455   Qual_class_nuc_id,
456   Qual_class_prt_id,
457   Qual_class_seq_loc,
458   Qual_class_its,
459   Qual_class_sec_str,
460   Qual_class_trna_codons,
461   Qual_class_translation,
462   Qual_class_transcription,
463   Qual_class_peptide,
464   Qual_class_protnames,
465   Qual_class_encodes,
466   Qual_class_illegal,
467   Qual_class_note,
468   Qual_class_rpt_unit,
469   Qual_class_product,
470   Qual_class_model_ev,
471   Qual_class_gene_syn,
472   Qual_class_sep_gene_syn,
473   Qual_class_locus_tag,
474   Qual_class_map,
475   Qual_class_go,
476   Qual_class_nomenclature,
477   Qual_class_gene_nomen,
478   Qual_class_pcr,
479   Qual_class_pcr_react,
480   Qual_class_mol_wt,
481   Qual_class_voucher,
482   Qual_class_lat_lon,
483   Qual_class_mobile_element,
484   Qual_class_tag_peptide
485 }  QualType;
486 
487 /* source 'feature' */
488 
489 /* some qualifiers will require additional content verification not
490    explicitly indicated by the class type */
491 
492 typedef enum {
493   SCQUAL_acronym = 1,
494   SCQUAL_anamorph,
495   SCQUAL_authority,
496   SCQUAL_biotype,
497   SCQUAL_biovar,
498   SCQUAL_bio_material,
499   SCQUAL_breed,
500   SCQUAL_cell_line,
501   SCQUAL_cell_type,
502   SCQUAL_chemovar,
503   SCQUAL_chromosome,
504   SCQUAL_citation,
505   SCQUAL_clone,
506   SCQUAL_clone_lib,
507   SCQUAL_collected_by,
508   SCQUAL_collection_date,
509   SCQUAL_common,
510   SCQUAL_common_name,
511   SCQUAL_country,
512   SCQUAL_cultivar,
513   SCQUAL_culture_collection,
514   SCQUAL_db_xref,
515   SCQUAL_org_xref,
516   SCQUAL_dev_stage,
517   SCQUAL_dosage,
518   SCQUAL_ecotype,
519   SCQUAL_endogenous_virus_name,
520   SCQUAL_environmental_sample,
521   SCQUAL_extrachrom,
522   SCQUAL_focus,
523   SCQUAL_forma,
524   SCQUAL_forma_specialis,
525   SCQUAL_frequency,
526   SCQUAL_fwd_primer_name,
527   SCQUAL_fwd_primer_seq,
528   SCQUAL_gb_acronym,
529   SCQUAL_gb_anamorph,
530   SCQUAL_gb_synonym,
531   SCQUAL_genotype,
532   SCQUAL_germline,
533   SCQUAL_group,
534   SCQUAL_haplogroup,
535   SCQUAL_haplotype,
536   SCQUAL_identified_by,
537   SCQUAL_ins_seq_name,
538   SCQUAL_isolate,
539   SCQUAL_isolation_source,
540   SCQUAL_lab_host,
541   SCQUAL_label,
542   SCQUAL_lat_lon,
543   SCQUAL_linkage_group,
544   SCQUAL_macronuclear,
545   SCQUAL_map,
546   SCQUAL_mating_type,
547   SCQUAL_metagenome_note,
548   SCQUAL_metagenome_source,
549   SCQUAL_metagenomic,
550   SCQUAL_mol_type,
551   SCQUAL_note,
552   SCQUAL_old_lineage,
553   SCQUAL_old_name,
554   SCQUAL_organism,
555   SCQUAL_organelle,
556   SCQUAL_orgmod_note,
557   SCQUAL_pathovar,
558   SCQUAL_PCR_primers,
559   SCQUAL_PCR_primer_note,
560   SCQUAL_PCR_reaction,
561   SCQUAL_plasmid_name,
562   SCQUAL_plastid_name,
563   SCQUAL_pop_variant,
564   SCQUAL_rearranged,
565   SCQUAL_rev_primer_name,
566   SCQUAL_rev_primer_seq,
567   SCQUAL_segment,
568   SCQUAL_seqfeat_note,
569   SCQUAL_sequenced_mol,
570   SCQUAL_serogroup,
571   SCQUAL_serotype,
572   SCQUAL_serovar,
573   SCQUAL_sex,
574   SCQUAL_spec_or_nat_host,
575   SCQUAL_specimen_voucher,
576   SCQUAL_strain,
577   SCQUAL_sub_clone,
578   SCQUAL_sub_group,
579   SCQUAL_sub_species,
580   SCQUAL_sub_strain,
581   SCQUAL_sub_type,
582   SCQUAL_subsource_note,
583   SCQUAL_synonym,
584   SCQUAL_teleomorph,
585   SCQUAL_tissue_lib,
586   SCQUAL_tissue_type,
587   SCQUAL_transgenic,
588   SCQUAL_transposon_name,
589   SCQUAL_type,
590   SCQUAL_unstructured,
591   SCQUAL_usedin,
592   SCQUAL_variety,
593   SCQUAL_zero_orgmod,
594   SCQUAL_one_orgmod,
595   SCQUAL_zero_subsrc,
596   ASN2GNBK_TOTAL_SOURCE
597 }  SourceType;
598 
599 NLM_EXTERN SourceType orgModToSourceIdx [41];
600 
601 typedef enum {
602   FTQUAL_allele = 1,
603   FTQUAL_anticodon,
604   FTQUAL_bond,
605   FTQUAL_bond_type,
606   FTQUAL_bound_moiety,
607   FTQUAL_cdd_definition,
608   FTQUAL_cds_product,
609   FTQUAL_citation,
610   FTQUAL_clone,
611   FTQUAL_coded_by,
612   FTQUAL_compare,
613   FTQUAL_codon,
614   FTQUAL_codon_start,
615   FTQUAL_cons_splice,
616   FTQUAL_db_xref,
617   FTQUAL_derived_from,
618   FTQUAL_direction,
619   FTQUAL_EC_number,
620   FTQUAL_encodes,
621   FTQUAL_estimated_length,
622   FTQUAL_evidence,
623   FTQUAL_exception,
624   FTQUAL_exception_note,
625   FTQUAL_experiment,
626   FTQUAL_experiment_string,
627   FTQUAL_extra_products,
628   FTQUAL_figure,
629   FTQUAL_frequency,
630   FTQUAL_function,
631   FTQUAL_gene,
632   FTQUAL_gene_desc,
633   FTQUAL_gene_allele,
634   FTQUAL_gene_map,
635   FTQUAL_gene_cyt_map,
636   FTQUAL_gene_gen_map,
637   FTQUAL_gene_rad_map,
638   FTQUAL_gene_syn,
639   FTQUAL_gene_syn_refseq,
640   FTQUAL_gene_note,
641   FTQUAL_gene_xref,
642   FTQUAL_go_component,
643   FTQUAL_go_function,
644   FTQUAL_go_process,
645   FTQUAL_heterogen,
646   FTQUAL_illegal_qual,
647   FTQUAL_inference,
648   FTQUAL_inference_string,
649   FTQUAL_inference_good,
650   FTQUAL_inference_bad,
651   FTQUAL_insertion_seq,
652   FTQUAL_label,
653   FTQUAL_locus_tag,
654   FTQUAL_map,
655   FTQUAL_maploc,
656   FTQUAL_mobile_element,
657   FTQUAL_mod_base,
658   FTQUAL_modelev,
659   FTQUAL_mol_wt,
660   FTQUAL_ncRNA_class,
661   FTQUAL_ncRNA_note,
662   FTQUAL_ncRNA_other,
663   FTQUAL_nomenclature,
664   FTQUAL_gene_nomen,
665   FTQUAL_note,
666   FTQUAL_number,
667   FTQUAL_old_locus_tag,
668   FTQUAL_operon,
669   FTQUAL_organism,
670   FTQUAL_partial,
671   FTQUAL_PCR_conditions,
672   FTQUAL_peptide,
673   FTQUAL_phenotype,
674   FTQUAL_product,
675   FTQUAL_product_quals,
676   FTQUAL_prot_activity,
677   FTQUAL_prot_comment,
678   FTQUAL_prot_EC_number,
679   FTQUAL_prot_note,
680   FTQUAL_prot_method,
681   FTQUAL_prot_conflict,
682   FTQUAL_prot_desc,
683   FTQUAL_prot_missing,
684   FTQUAL_prot_name,
685   FTQUAL_prot_names,
686   FTQUAL_protein_id,
687   FTQUAL_pseudo,
688   FTQUAL_pyrrolysine,
689   FTQUAL_pyrrolysine_note,
690   FTQUAL_region,
691   FTQUAL_region_name,
692   FTQUAL_replace,
693   FTQUAL_ribosomal_slippage,
694   FTQUAL_rpt_family,
695   FTQUAL_rpt_type,
696   FTQUAL_rpt_unit,
697   FTQUAL_rpt_unit_range,
698   FTQUAL_rpt_unit_seq,
699   FTQUAL_rrna_its,
700   FTQUAL_satellite,
701   FTQUAL_sec_str_type,
702   FTQUAL_selenocysteine,
703   FTQUAL_selenocysteine_note,
704   FTQUAL_seqannot_note,
705   FTQUAL_seqfeat_note,
706   FTQUAL_site,
707   FTQUAL_site_type,
708   FTQUAL_standard_name,
709   FTQUAL_tag_peptide,
710   FTQUAL_tag_peptide_str,
711   FTQUAL_transcription,
712   FTQUAL_transcript_id,
713   FTQUAL_transcript_id_note,
714   FTQUAL_transl_except,
715   FTQUAL_transl_table,
716   FTQUAL_translation,
717   FTQUAL_transposon,
718   FTQUAL_trans_splicing,
719   FTQUAL_trna_aa,
720   FTQUAL_trna_codons,
721   FTQUAL_trna_codons_note,
722   FTQUAL_UniProtKB_evidence,
723   FTQUAL_usedin,
724   FTQUAL_xtra_prod_quals,
725   ASN2GNBK_TOTAL_FEATUR
726 }  FtQualType;
727 
728 NLM_EXTERN void FF_www_db_xref(
729   IntAsn2gbJobPtr ajp,
730   StringItemPtr ffstring,
731   CharPtr db,
732   CharPtr identifier,
733   BioseqPtr bsp
734 );
735 
736 NLM_EXTERN void FF_www_specimen_voucher (
737   IntAsn2gbJobPtr ajp,
738   StringItemPtr ffstring,
739   CharPtr subname
740 );
741 
742 NLM_EXTERN void FF_Add_NCBI_Base_URL (
743   StringItemPtr ffstring,
744   CharPtr url
745 );
746 
747 NLM_EXTERN Boolean StringIsJustQuotes (
748   CharPtr str
749 );
750 
751 
752 typedef struct sourcequal {
753   CharPtr   name;
754   QualType  qualclass;
755 } SourceQual, PNTR SourceQualPtr;
756 
757 NLM_EXTERN SourceQual asn2gnbk_source_quals [ASN2GNBK_TOTAL_SOURCE];
758 
759 NLM_EXTERN SourceType subSourceToSourceIdx [42];
760 
761 NLM_EXTERN void DoOneSection (
762   BioseqPtr target,
763   BioseqPtr parent,
764   BioseqPtr bsp,
765   BioseqPtr refs,
766   SeqLocPtr slp,
767   Uint2 seg,
768   Int4 from,
769   Int4 to,
770   Boolean contig,
771   Boolean onePartOfSeg,
772   Asn2gbWorkPtr awp
773 );
774 
775 NLM_EXTERN void DoOneBioseq (
776   BioseqPtr bsp,
777   Pointer userdata
778 );
779 
780 NLM_EXTERN BaseBlockPtr Asn2gbAddBlock (
781   Asn2gbWorkPtr awp,
782   BlockType blocktype,
783   size_t size
784 );
785 
786 NLM_EXTERN void InitWWW (IntAsn2gbJobPtr ajp);
787 NLM_EXTERN void FiniWWW (IntAsn2gbJobPtr ajp);
788 NLM_EXTERN Boolean GetWWW (IntAsn2gbJobPtr ajp);
789 
790 NLM_EXTERN StringItemPtr FFGetString (IntAsn2gbJobPtr ajp);
791 NLM_EXTERN void FFRecycleString (IntAsn2gbJobPtr ajp, StringItemPtr ffstring);
792 NLM_EXTERN void FFAddOneChar (
793   StringItemPtr sip, 
794   Char ch,
795   Boolean convertQuotes
796 );
797 NLM_EXTERN void FFAddNewLine(StringItemPtr ffstring);
798 NLM_EXTERN void FFAddNChar (
799   StringItemPtr sip, 
800   Char ch,
801   Int4 n,
802   Boolean convertQuotes
803 );
804 NLM_EXTERN void FFExpandTildes (StringItemPtr sip, CharPtr PNTR cpp);
805 NLM_EXTERN void FFSemicolonSeparateTildes (StringItemPtr sip, CharPtr PNTR cpp);
806 NLM_EXTERN void FFReplaceTildesWithSpaces (StringItemPtr ffstring, CharPtr PNTR cpp);
807 NLM_EXTERN void FFOldExpand (StringItemPtr sip, CharPtr PNTR cpp);
808 NLM_EXTERN void AddCommentStringWithTildes (StringItemPtr ffstring, CharPtr string);
809 NLM_EXTERN void AddCommentWithURLlinks (
810   IntAsn2gbJobPtr ajp,
811   StringItemPtr ffstring,
812   CharPtr prefix,
813   CharPtr str,
814   CharPtr suffix
815 );
816 NLM_EXTERN void AddStringWithTildes (StringItemPtr ffstring, CharPtr string);
817 NLM_EXTERN void FFProcessTildes (StringItemPtr sip, CharPtr PNTR cpp, Int2 tildeAction);
818 NLM_EXTERN void FFAddPeriod (StringItemPtr sip);
819 NLM_EXTERN void FFAddOneString (
820   StringItemPtr sip, 
821   CharPtr string,
822   Boolean addPeriod, 
823   Boolean convertQuotes,
824   Int2 tildeAction
825 );
826 NLM_EXTERN void FFCatenateSubString (
827   StringItemPtr dest,
828   StringItemPtr start_sip, Int4 start_pos,
829   StringItemPtr end_sip, Int4 end_pos,
830   Uint4 line_max
831 );
832 NLM_EXTERN CharPtr FFToCharPtr (StringItemPtr sip);
833 NLM_EXTERN void FFSkipLink (StringItemPtr PNTR iterp, Int4Ptr ip);
834 
835 NLM_EXTERN Boolean FFIsStartOfLink (
836     StringItemPtr iter,
837     Int4 pos );
838 
839 NLM_EXTERN void FFSavePosition(StringItemPtr ffstring, StringItemPtr PNTR bufptr, Int4 PNTR posptr);
840 NLM_EXTERN void FFTrim (
841     StringItemPtr ffstring,
842     StringItemPtr line_start,
843     Int4 line_pos,
844     Int4 line_prefix_len
845 );
846 NLM_EXTERN int FFNextChar(
847   StringItemPtr start_sip,
848   Int4 start_pos
849 );
850 NLM_EXTERN void FFAdvanceChar(
851   StringItemPtr* start_sip,
852   Int4* start_pos
853 );
854 NLM_EXTERN void FFCalculateLineBreak (
855   StringItemPtr PNTR break_sip, Int4 PNTR break_pos,
856   Int4 init_indent, Int4 visible
857 );
858 NLM_EXTERN void FFLineWrap (
859   StringItemPtr dest, 
860   StringItemPtr src, 
861   Int4 init_indent,
862   Int4 cont_indent, 
863   Int4 line_max,
864   CharPtr eb_line_prefix
865 );
866 NLM_EXTERN void FFStartPrint (
867   StringItemPtr sip,
868   FmtType format,
869   Int4 gb_init_indent,
870   Int4 gb_cont_indent,
871   CharPtr gb_label,
872   Int4 gb_tab_to,
873   Int4 eb_init_indent,
874   Int4 eb_cont_indent,
875   CharPtr eb_line_prefix,
876   Boolean eb_print_xx 
877 );
878 NLM_EXTERN void FFAddTextToString (
879   StringItemPtr ffstring, 
880   CharPtr prefix,
881   CharPtr string,
882   CharPtr suffix,
883   Boolean addPeriod,
884   Boolean convertQuotes,
885   Int2 tildeAction
886 );
887 NLM_EXTERN CharPtr FFEndPrint (
888   IntAsn2gbJobPtr ajp,
889   StringItemPtr ffstring,
890   FmtType format,
891   Int2 gb_init_indent,
892   Int2 gb_cont_indent,
893   Int2 eb_init_indent,
894   Int2 eb_cont_indent,
895   CharPtr eb_line_prefix
896 );
897 NLM_EXTERN Uint4 FFLength(StringItemPtr ffstring);
898 NLM_EXTERN Char FFCharAt(StringItemPtr ffstring, Uint4 pos);
899 NLM_EXTERN Char FFFindChar (
900   StringItemPtr ffstring,
901   StringItemPtr start_buf,
902   Uint4 start_pos,
903   Uint4 old_pos,
904   Uint4 new_pos
905 );
906 NLM_EXTERN Boolean FFEmpty(StringItemPtr ffstring);
907 NLM_EXTERN Int4 FFStringSearch (
908   StringItemPtr text,
909   const CharPtr pattern,
910   Uint4 position
911 );
912 
913 /*
914  * Scans the given buffer from a given scan position, for the next occurrence of 
915  * the indicated character. The search breaks when the character is found, or the
916  * supplied break position is reached.
917  * On exit, the scan position will either be on the character found, or at the 
918  * given break position.
919  */
920 NLM_EXTERN Boolean FFFindSingleChar(
921   StringItemPtr* p_line_sip,
922   Int4* p_line_pos,
923   StringItemPtr break_sip,
924   Int4 break_pos,
925   char c 
926 );
927 
928  /*
929  * Returns the number of bytes remaining in the buffer chain, starting from the 
930  * given buffer and a read mark inside it.
931  */
932 NLM_EXTERN Int4 FFRemainingLength(
933   StringItemPtr sip,
934   Int4 cur_pos
935 );
936 
937  /*
938  * Scans the given line for the next opening tag of an HTML hyperlink. Ajusts 
939  * the line position to immediately after the opening tag (if such a tag is 
940  * found) or the the end of the line (if no such tag is found).
941  * If a character buffer is supplied, this function will copy any opening tag
942  * it finds into that buffer.
943  */
944 NLM_EXTERN Boolean FFExtractNextOpenLink(
945   StringItemPtr* p_line_sip,
946   Int4* p_line_pos,
947   StringItemPtr break_sip,
948   Int4 break_pos,
949   char* buf_open_link 
950 );
951 
952  /*
953  * Scans the given line for the next closing tag of an HTML hyperlink. Ajusts 
954  * the line position to immediately after the closing tag (if such a tag is 
955  * found) or the the end of the line (if no such tag is found).
956  */
957 NLM_EXTERN Boolean FFExtractNextCloseLink(
958   StringItemPtr* p_line_sip,
959   Int4* p_line_pos,
960   StringItemPtr break_sip,
961   Int4 break_pos 
962 );
963 
964 /*
965  * Tests whether the line ends between the opening and closing tag of an HTML 
966  * hyper link.
967  */
968 NLM_EXTERN Boolean FFLineBreakSplitsHtmlLink( 
969   StringItemPtr start_sip, 
970   Int4 start_pos, 
971   StringItemPtr break_sip, 
972   Int4 break_pos,
973   char* buf_link_open, 
974   Int4* html_open_link_counter
975 ); 
976 
977 NLM_EXTERN Boolean IsWholeWordSubstr (
978   StringItemPtr searchStr,
979   Uint4 foundPos,
980   CharPtr subStr
981 );
982 
983 NLM_EXTERN ValNodePtr ValNodeCopyStrToHead (ValNodePtr PNTR head, Int2 choice, CharPtr str);
984 NLM_EXTERN CharPtr MergeFFValNodeStrs (
985   ValNodePtr list
986 );
987 NLM_EXTERN void AddValNodeString (
988   ValNodePtr PNTR head,
989   CharPtr prefix,
990   CharPtr string,
991   CharPtr suffix
992 );
993 NLM_EXTERN void FFAddString_NoRedund (
994   StringItemPtr unique,
995   CharPtr prefix,
996   CharPtr string,
997   CharPtr suffix,
998   Boolean convertQuotes
999 );
1000 NLM_EXTERN void s_AddPeriodToEnd (CharPtr someString);
1001 NLM_EXTERN Boolean s_RemovePeriodFromEnd (CharPtr someString);
1002 NLM_EXTERN Boolean IsEllipsis (
1003   CharPtr str
1004 );
1005 NLM_EXTERN void A2GBSeqLocReplaceID (
1006   SeqLocPtr newloc,
1007   SeqLocPtr ajpslp
1008 );
1009 NLM_EXTERN CharPtr asn2gb_PrintDate (
1010   DatePtr dp
1011 );
1012 NLM_EXTERN CharPtr DateToFF (
1013   CharPtr buf,
1014   DatePtr dp,
1015   Boolean citSub
1016 );
1017 
1018 NLM_EXTERN CharPtr FFFlatLoc (
1019   IntAsn2gbJobPtr ajp,
1020   BioseqPtr bsp,
1021   SeqLocPtr location,
1022   Boolean masterStyle
1023 );
1024 
1025 NLM_EXTERN void FF_www_featloc(StringItemPtr ffstring, CharPtr loc);
1026 
1027 NLM_EXTERN CharPtr GetMolTypeQual (
1028   BioseqPtr bsp
1029 );
1030 
1031 NLM_EXTERN void AddFeatureToGbseq (
1032   GBSeqPtr gbseq,
1033   GBFeaturePtr gbfeat,
1034   CharPtr str,
1035   SeqFeatPtr sfp
1036 );
1037 
1038 NLM_EXTERN void AddIntervalsToGbfeat (
1039   GBFeaturePtr gbfeat,
1040   SeqLocPtr location,
1041   BioseqPtr target
1042 );
1043 
1044 NLM_EXTERN SeqIdPtr SeqLocIdForProduct (
1045   SeqLocPtr product
1046 );
1047 
1048 NLM_EXTERN CharPtr GetAuthorsString (
1049   FmtType format,
1050   AuthListPtr alp,
1051   CharPtr PNTR consortP,
1052   IndxPtr index,
1053   GBReferencePtr gbref
1054 );
1055 
1056 NLM_EXTERN AuthListPtr GetAuthListPtr (
1057   PubdescPtr pdp,
1058   CitSubPtr csp
1059 );
1060 
1061 NLM_EXTERN Int2 MatchRef (
1062   ValNodePtr ppr,
1063   RefBlockPtr PNTR rbpp,
1064   Int2 numReferences
1065 );
1066 
1067 NLM_EXTERN SeqLocPtr SeqLocReMapEx (
1068   SeqIdPtr newid,
1069   SeqLocPtr seq_loc,
1070   SeqLocPtr location,
1071   Int4 offset,
1072   Boolean rev,
1073   Boolean masterStyle
1074 );
1075 
1076 NLM_EXTERN CharPtr Get3LetterSymbol (
1077   IntAsn2gbJobPtr  ajp,
1078   Uint1 seq_code,
1079   SeqCodeTablePtr table,
1080   Uint1 residue
1081 );
1082 
1083 NLM_EXTERN CharPtr CleanQualValue (
1084   CharPtr str
1085 );
1086 NLM_EXTERN CharPtr Asn2gnbkCompressSpaces (CharPtr str);
1087 NLM_EXTERN CharPtr StripAllSpaces (
1088   CharPtr str
1089 );
1090 
1091 NLM_EXTERN Boolean GetAccnVerFromServer (Int4 gi, CharPtr buf);
1092 
1093 NLM_EXTERN CharPtr bondList [];
1094 NLM_EXTERN CharPtr siteList [];
1095 NLM_EXTERN CharPtr secStrText [];
1096 
1097 NLM_EXTERN CharPtr goQualType [];
1098 NLM_EXTERN CharPtr goFieldType [];
1099 
1100 NLM_EXTERN CharPtr legalDbXrefs [];
1101 NLM_EXTERN CharPtr legalSrcDbXrefs [];
1102 NLM_EXTERN CharPtr legalRefSeqDbXrefs [];
1103 
1104 NLM_EXTERN Boolean DbxrefIsValid (
1105   CharPtr name,
1106   BoolPtr is_refseq_P,
1107   BoolPtr is_source_P,
1108   BoolPtr is_badcap_P,
1109   CharPtr PNTR goodcapP
1110 );
1111 
1112 NLM_EXTERN void AddAllDbxrefsToBioseq (
1113   BioseqPtr bsp
1114 );
1115 
1116 NLM_EXTERN void AddRefStatsBlock (
1117   Asn2gbWorkPtr awp
1118 );
1119 NLM_EXTERN Boolean AddReferenceBlock (
1120   Asn2gbWorkPtr awp,
1121   Boolean isRefSeq
1122 );
1123 NLM_EXTERN void AddSourceFeatBlock (
1124   Asn2gbWorkPtr awp
1125 );
1126 NLM_EXTERN void AddFeatStatsBlock (
1127   Asn2gbWorkPtr awp
1128 );
1129 NLM_EXTERN void AddFeatureBlock (
1130   Asn2gbWorkPtr awp
1131 );
1132 NLM_EXTERN void AddLocusBlock (
1133   Asn2gbWorkPtr awp,
1134   Boolean willshowwgs,
1135   Boolean willshowcage,
1136   Boolean willshowgenome,
1137   Boolean willshowcontig,
1138   Boolean willshowsequence
1139 );
1140 NLM_EXTERN void AddAccessionBlock (
1141   Asn2gbWorkPtr awp
1142 );
1143 NLM_EXTERN void AddVersionBlock (
1144   Asn2gbWorkPtr awp
1145 );
1146 NLM_EXTERN void AddDblinkBlock (
1147   Asn2gbWorkPtr awp
1148 );
1149 NLM_EXTERN void AddDbsourceBlock (
1150   Asn2gbWorkPtr awp
1151 );
1152 NLM_EXTERN void AddDateBlock (
1153   Asn2gbWorkPtr awp
1154 );
1155 NLM_EXTERN void AddDeflineBlock (
1156   Asn2gbWorkPtr awp
1157 );
1158 NLM_EXTERN void AddKeywordsBlock (
1159   Asn2gbWorkPtr awp
1160 );
1161 NLM_EXTERN void AddSegmentBlock (
1162   Asn2gbWorkPtr awp,
1163   Boolean onePartOfSeg,
1164   Boolean is_na
1165 );
1166 NLM_EXTERN void AddSourceBlock (
1167   Asn2gbWorkPtr awp
1168 );
1169 NLM_EXTERN void AddOrganismBlock (
1170   Asn2gbWorkPtr awp
1171 );
1172 NLM_EXTERN void AddCommentBlock (
1173   Asn2gbWorkPtr awp
1174 );
1175 NLM_EXTERN void AddPrimaryBlock (
1176   Asn2gbWorkPtr awp
1177 );
1178 NLM_EXTERN void AddFeatHeaderBlock (
1179   Asn2gbWorkPtr awp
1180 );
1181 NLM_EXTERN void AddSourceFeatBlock (
1182   Asn2gbWorkPtr awp
1183 );
1184 NLM_EXTERN void AddWGSBlock (
1185   Asn2gbWorkPtr awp
1186 );
1187 NLM_EXTERN void AddCAGEBlock (
1188   Asn2gbWorkPtr awp
1189 );
1190 NLM_EXTERN void AddGenomeBlock (
1191   Asn2gbWorkPtr awp
1192 );
1193 NLM_EXTERN void AddContigBlock (
1194   Asn2gbWorkPtr awp
1195 );
1196 NLM_EXTERN void AddBasecountBlock (
1197   Asn2gbWorkPtr awp
1198 );
1199 NLM_EXTERN void AddOriginBlock (
1200   Asn2gbWorkPtr awp
1201 );
1202 NLM_EXTERN void AddSequenceBlock (
1203   Asn2gbWorkPtr awp
1204 );
1205 NLM_EXTERN void AddSlashBlock (
1206   Asn2gbWorkPtr awp
1207 );
1208 
1209 NLM_EXTERN CharPtr DefaultFormatBlock (
1210   Asn2gbFormatPtr afp,
1211   BaseBlockPtr bbp
1212 );
1213 NLM_EXTERN CharPtr FormatSourceBlock (
1214   Asn2gbFormatPtr afp,
1215   BaseBlockPtr bbp
1216 );
1217 NLM_EXTERN CharPtr FormatOrganismBlock (
1218   Asn2gbFormatPtr afp,
1219   BaseBlockPtr bbp
1220 );
1221 NLM_EXTERN CharPtr FormatReferenceBlock (
1222   Asn2gbFormatPtr afp,
1223   BaseBlockPtr bbp
1224 );
1225 NLM_EXTERN CharPtr FormatCommentBlock (
1226   Asn2gbFormatPtr afp,
1227   BaseBlockPtr bbp
1228 );
1229 NLM_EXTERN CharPtr FormatFeatHeaderBlock (
1230   Asn2gbFormatPtr afp,
1231   BaseBlockPtr bbp
1232 );
1233 NLM_EXTERN CharPtr FormatSourceFeatBlock (
1234   Asn2gbFormatPtr afp,
1235   BaseBlockPtr bbp
1236 );
1237 NLM_EXTERN CharPtr FormatFeatureBlock (
1238   Asn2gbFormatPtr afp,
1239   BaseBlockPtr bbp
1240 );
1241 NLM_EXTERN CharPtr FormatBasecountBlock (
1242   Asn2gbFormatPtr afp,
1243   BaseBlockPtr bbp
1244 );
1245 NLM_EXTERN CharPtr FormatSequenceBlock (
1246   Asn2gbFormatPtr afp,
1247   BaseBlockPtr bbp
1248 );
1249 NLM_EXTERN CharPtr FormatContigBlock (
1250   Asn2gbFormatPtr afp,
1251   BaseBlockPtr bbp
1252 );
1253 NLM_EXTERN CharPtr FormatSlashBlock (
1254   Asn2gbFormatPtr afp,
1255   BaseBlockPtr bbp
1256 );
1257 
1258 NLM_EXTERN void PrintFtableIntervals (
1259   ValNodePtr PNTR head,
1260   BioseqPtr target,
1261   SeqLocPtr location,
1262   CharPtr label
1263 );
1264 NLM_EXTERN void PrintFtableLocAndQuals (
1265   IntAsn2gbJobPtr ajp,
1266   ValNodePtr PNTR head,
1267   BioseqPtr target,
1268   SeqFeatPtr sfp,
1269   SeqMgrFeatContextPtr context
1270 );
1271 NLM_EXTERN CharPtr FormatFtableSourceFeatBlock (
1272   BaseBlockPtr bbp,
1273   BioseqPtr target
1274 );
1275 
1276 NLM_EXTERN void DoImmediateRemoteFeatureFormat (
1277   Asn2gbFormatPtr afp,
1278   BaseBlockPtr bbp,
1279   SeqFeatPtr sfp
1280 );
1281 
1282 NLM_EXTERN void DoImmediateFormat (
1283   Asn2gbFormatPtr afp,
1284   BaseBlockPtr bbp
1285 );
1286 
1287 NLM_EXTERN void DoQuickLinkFormat (
1288   Asn2gbFormatPtr afp,
1289   CharPtr str
1290 );
1291 
1292 NLM_EXTERN Boolean DeltaLitOnly (
1293   BioseqPtr bsp
1294 );
1295 
1296 NLM_EXTERN Boolean SegHasParts (
1297   BioseqPtr bsp
1298 );
1299 
1300 
1301 #ifdef __cplusplus
1302 }
1303 #endif
1304 
1305 #undef NLM_EXTERN
1306 #ifdef NLM_EXPORT
1307 #define NLM_EXTERN NLM_EXPORT
1308 #else
1309 #define NLM_EXTERN
1310 #endif
1311 
1312 #endif /* ndef _ASN2NGNBI_ */
1313 
1314 

source navigation ]   [ diff markup ]   [ identifier search ]   [ freetext search ]   [ file search ]  

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.