1 /*   sequin.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:  sequin.h
27 *
28 * Author:  Jonathan Kans
29 *
30 * Version Creation Date:   1/22/95
31 *
32 * $Revision: 6.780 $
33 *
34 * File Description:
35 *
36 * Modifications:
37 * --------------------------------------------------------------------------
38 * Date     Name        Description of modification
39 * -------  ----------  -----------------------------------------------------
40 *
41 *
42 * ==========================================================================
43 */
44 
45 #ifndef _SEQUIN_
46 #define _SEQUIN_
47 
48 #ifdef INTERNAL_NCBI_SEQUIN
49 #ifndef EXTRA_SERVICES
50 #define EXTRA_SERVICES
51 #endif
52 #ifndef NETWORK_SAVVY_SEQUIN
53 #define NETWORK_SAVVY_SEQUIN
54 #endif
55 #endif
56 
57 #ifdef EXTRA_SERVICES
58 #define USE_DESKTOP
59 #define REPLACE_THIS
60 #define EDIT_LOCUS
61 #endif
62 
63 #ifdef NETWORK_SAVVY_SEQUIN
64 #define USE_ENTREZ
65 #define USE_LOCAL
66 #define USE_BLAST
67 #define USE_MEDARCH
68 #define USE_TAXON
69 #define ALLOW_DOWNLOAD
70 #endif
71 
72 #ifdef PUBLIC_NETWORK_SEQUIN
73 #define USE_DESKTOP
74 #define USE_ENTREZ
75 #define USE_LOCAL
76 #define USE_BLAST
77 #define USE_MEDARCH
78 #define USE_TAXON
79 #define ALLOW_DOWNLOAD
80 #endif
81 
82 #include <dlogutil.h>
83 #include <bspview.h>
84 #include <objproj.h>
85 #include <urlquery.h>
86 #include <explore.h>
87 
88 #ifdef __cplusplus
89 extern "C" {
90 #endif
91 
92 
93 #define SEQ_PKG_SINGLE        1
94 #define SEQ_PKG_GAPPED        2
95 #define SEQ_PKG_GENOMICCDNA   3
96 #define SEQ_PKG_POPULATION    4
97 #define SEQ_PKG_PHYLOGENETIC  5
98 #define SEQ_PKG_MUTATION      6
99 #define SEQ_PKG_ENVIRONMENT   7
100 #define SEQ_PKG_GENBANK       8
101 #define SEQ_PKG_TSA           9
102 #define NUM_SEQ_PKG           9
103 
104 #define SEQ_FMT_FASTA         1
105 #define SEQ_FMT_ALIGNMENT     2
106 #define NUM_SEQ_FMT           2
107 
108 /*
109 #define SEQ_FMT_FASTAGAP      2
110 #define SEQ_FMT_PHYLIP        3
111 #define SEQ_FMT_NEXUS         4
112 #define SEQ_FMT_PAUP          5
113 */
114 
115 #define SEQ_ORIG_SUBMISSION   1
116 #define SEQ_TPA_SUBMISSION    2
117 
118 typedef struct fmtblk {
119   Int2         seqPackage;
120   Int2         seqFormat;
121   Int2         numSeqs;
122   Int2         submType;
123 } FormatBlock, PNTR FormatBlockPtr;
124 
125 typedef struct sqnblk {
126   AuthorPtr    contactperson;
127   AuthListPtr  citsubauthors;
128   AffilPtr     citsubaffil;
129   CharPtr      citsubtitle;
130   DatePtr      releasedate;
131   Boolean      holduntilpublished;
132   SeqDescPtr   descriptors;
133 } SequinBlock, PNTR SequinBlockPtr;
134 
135 extern CharPtr SEQUIN_APPLICATION;
136 extern CharPtr SEQUIN_SERVICES;
137 extern CharPtr SEQUIN_VERSION;
138 
139 extern ForM  helpForm;
140 
141 extern Boolean  useDesktop;
142 extern Boolean  useEntrez;
143 extern Boolean  useLocal;
144 extern Boolean  useBlast;
145 extern Boolean  useMedarch;
146 extern Boolean  useTaxon;
147 extern Boolean  allowDownload;
148 extern Boolean  extraServices;
149 extern Boolean  indexerVersion;
150 extern CharPtr  genomeCenter;
151 
152 extern Boolean  leaveAsOldAsn;
153 extern Boolean  newAlignReader;
154 
155 #ifdef WIN_MAC
156 extern Boolean  termListUp;
157 extern Boolean  docSumUp;
158 extern Boolean  bioseqViewUp;
159 #endif
160 
161 extern void SwapQualifiers (IteM i);
162 extern void PrefixAuthorityWithOrganism (IteM i);
163 extern void UpdateFastaSet (IteM i);
164 extern void ExtendAllSequencesInSet (IteM i);
165 extern void SeqLocAdjustByOffset (SeqLocPtr slp, Int4 offset);
166 extern void SplitSegmentedFeatsMenuItem (IteM i);
167 extern SeqFeatPtr SeqFeatCopy (SeqFeatPtr sfp);
168 extern SequinBlockPtr SequinBlockFree (SequinBlockPtr sbp);
169 
170 extern ForM CreateStartupForm (Int2 left, Int2 top, CharPtr title,
171                                BtnActnProc startFa2htgs,
172                                BtnActnProc startPhrap,
173                                BtnActnProc buildContig,
174                                BtnActnProc startNew,
175                                BtnActnProc readExisting,
176                                BtnActnProc fetchFromNet,
177                                BtnActnProc showHelp,
178                                BtnActnProc createSubmissionTemplate,
179                                BtnActnProc quitProgram,
180                                WndActnProc activateForm);
181 
182 extern void DrawAbout (PaneL p);
183 extern Int2 AboutBoxWidth (void);
184 extern Int2 AboutBoxHeight (void);
185 
186 extern ForM CreateFormatForm (Int2 left, Int2 top, CharPtr title,
187                               BtnActnProc goToNext,
188                               BtnActnProc goBack,
189                               WndActnProc activateForm);
190 
191 extern ForM CreateInitSubmitterForm (Int2 left, Int2 top, CharPtr title,
192                                      BtnActnProc goToNext,
193                                      BtnActnProc goBack,
194                                      WndActnProc activateForm);
195 
196 extern DialoG CreateFastaDialog (GrouP h, CharPtr title, Boolean is_na, Boolean is_mrna,
197                                  CharPtr text, Boolean single, Int2Ptr seqPackagePtr);
198 
199 extern ForM CreateInitOrgNucProtForm (Int2 left, Int2 top, CharPtr title,
200                                       FormatBlockPtr format,
201                                       BtnActnProc goToNext,
202                                       BtnActnProc goBack,
203                                       WndActnProc activateForm);
204 
205 extern ForM CreateGenomeCenterForm (Int2 left, Int2 top, CharPtr title,
206                                     BtnActnProc finish,
207                                     BtnActnProc cancel,
208                                     Boolean readPhrap,
209                                     Boolean buildContig,
210                                     WndActnProc activateForm);
211 
212 extern SeqEntryPtr ImportOneGappedSequence (FILE *fp);
213 
214 extern Boolean HasZeroLengthSequence (ForM newForm);
215 extern Boolean SequencesFormHasProteins (ForM f);
216 extern SeqEntryPtr GetSequencesFormProteinList (ForM f);
217 extern SeqEntryPtr GetSequencesFormNucleotideList (ForM f);
218 extern Boolean SequencesFormHasTooManyNucleotides (ForM f);
219 
220 extern void AppendOrReplaceString (
221   CharPtr PNTR string_loc,
222   CharPtr new_value,
223   Boolean PNTR asked_question,
224   Boolean PNTR do_replace,
225   Boolean PNTR use_semicolon
226 );
227 
228 extern void ConsolidateLikeModifiersWithSemicolons (IteM i);
229 extern void ConsolidateLikeModifiersWithoutSemicolons (IteM i);
230 
231 extern void CountryLookupWithoutCapFix (IteM i);
232 extern void CountryLookupWithCapFix (IteM i);
233 NLM_EXTERN void FixMouseStrains (IteM i);
234 extern void ConvertPseudoCDSToMiscFeat (IteM i);
235 extern void ParseInfluenzaAVirusNames (IteM i);
236 extern void AddStrainAndSerotypeToInfluenzaAVirusNames (IteM i);
237 extern void FixupInfluenzaAVirusNames(IteM i);
238 extern void EditPubs (IteM i);
239 extern void EditPubsEx (BaseFormPtr bfp);
240 extern void RemovePubConsortiums (IteM i);
241 
242 extern void ExtendPartialFeatures (IteM i);
243 NLM_EXTERN void ExtendPartialFeaturesWithConstraint (IteM i);
244 NLM_EXTERN void ExtendPartialFeaturesWithConstraintBaseForm (BaseFormPtr bfp);
245 extern void TrimOrganismName (IteM i);
246 extern void SUCSubmitterProc (IteM i);
247 
248 extern CharPtr FixInfluenzaVirusName (CharPtr orig_name);
249 
250 extern void ConfirmSequencesFormParsing (ForM f, FormActnFunc putItAllTogether);
251 
252 extern ForM CreateHelpForm (Int2 left, Int2 top, CharPtr title,
253                             CharPtr file, BtnActnProc closeForm,
254                             WndActnProc activateForm);
255 
256 extern void SendHelpScrollMessage (ForM f, CharPtr heading, CharPtr section);
257 
258 extern void ApplyCDSFrame (IteM i);
259 
260 /* The next pointer in NewObject is not used in freeing the list.  Each
261 block is attached individually as extra data to the appropriate menu item.
262 The linked list is used solely to enable and disable new feature menu items
263 by the target bsp->mol, or to enable and disable analysis menu items by the
264 ability to produce FASTA (bioseq viewer or docsum window). */
265 
266 typedef struct urlparamdata {
267   Uint1          type;     /* 1 = text, 2 = checkbox, 3 = popup, 4 = radio, 5 = list */
268   CharPtr        param;
269   CharPtr        prompt;   /* if no prompt, use param */
270   CharPtr        dfault;
271   CharPtr        choices;  /* choices if param is popup */
272   CharPtr        group;    /* used for grouping related controls */
273   CharPtr        descr;
274   CharPtr        help;
275 } UrlParamData, PNTR UrlParamPtr;
276 
277 typedef struct newobjectdata {
278   Int2             kind;   /* 1 = feature creation, 2 = analysis */
279   ObjMgrProcPtr    ompp;
280   BaseFormPtr      bfp;
281   IteM             item;
282   Uint1            molgroup;
283   Uint2            descsubtype;
284   Boolean          bspOK;
285   Boolean          dsmOK;
286   Boolean          fastaNucOK;
287   Boolean          fastaProtOK;
288   Boolean          onlyBspTarget;
289   /* the next eight fields are for the analysis menu only, for remote URLs */
290   CharPtr          host_machine;
291   Uint2            host_port;
292   CharPtr          host_path;
293   CharPtr          query;
294   Uint4            timeoutsec;
295   Int2             format;     /* 1 = FASTA, 2 = ASN.1 */
296   Boolean          demomode;
297   QueryResultProc  resultproc;
298   ValNodePtr       paramlist; /* data.ptrvalue points to UrlParamData block */
299   CharPtr          prefix;
300   CharPtr          suffix;
301   CharPtr          homepage;
302   CharPtr          credits;
303   CharPtr          authors;
304   CharPtr          disclaimer;
305   CharPtr          reference;
306   Uint4            pmid;
307   CharPtr          blurb;
308   struct newobjectdata PNTR next;
309 } NewObjectData, PNTR NewObjectPtr;
310 
311 #ifdef WIN_MAC
312 extern VoidPtr macUserDataPtr;
313 #endif
314 
315 extern void SetupSpecialMenu (MenU m, BaseFormPtr bfp);
316 extern void SetupNewFeaturesMenu (MenU m, BaseFormPtr bfp);
317 extern void SetupNewDescriptorsMenu (MenU m, BaseFormPtr bfp);
318 extern void SetupNewPublicationsMenu (MenU m, BaseFormPtr bfp);
319 extern void SetupBatchApplyMenu (MenU s, BaseFormPtr bfp);
320 extern void SetupBatchEditMenu (MenU s, BaseFormPtr bfp);
321 extern MenU CreateAnalysisMenu (WindoW w, BaseFormPtr bfp, Boolean bspviewOK, Boolean docsumOK);
322 extern void SetupSequinFilters (void);
323 extern void SetupBioseqPageList (void);
324 
325 extern Boolean LIBCALLBACK SequinOpenMimeFile (CharPtr filename);
326 extern Boolean LIBCALLBACK SequinOpenResultFile (CharPtr filename);
327 extern Boolean LIBCALLBACK SequinHandleNetResults (CharPtr filename);
328 
329 extern void SequinCheckSocketsProc (void);
330 
331 extern Int4 MySeqEntryToAsn3 (SeqEntryPtr sep, Boolean strip, Boolean correct, Boolean force);
332 extern void ValSeqEntryForm (ForM f);
333 
334 extern void InitSequinExtras (void);
335 extern void FiniSequinExtras (void);
336 
337 /* This function destroys the SequinBlockPtr */
338 
339 extern Uint2 PackageFormResults (SequinBlockPtr sbp, SeqEntryPtr sep,
340                                  Boolean makePubAndDefLine);
341 
342 extern void EnableFeaturesPerTarget (BaseFormPtr bfp);
343 extern void EnableAnalysisItems (BaseFormPtr bfp, Boolean isDocSum);
344 
345 extern void ExtendSeqLocToPosition (SeqLocPtr slp, Boolean end5, Int4 pos);
346 
347 #define REGISTER_BIOSEQ_SEG_EDIT ObjMgrProcLoad(OMPROC_EDIT,"Edit Bioseq Seg","BioseqSegEditor",OBJ_BIOSEQ_SEG,0,OBJ_BIOSEQ_SEG,0,NULL,BioseqSegEditFunc,PROC_PRIORITY_DEFAULT)
348 extern Int2 LIBCALLBACK BioseqSegEditFunc (Pointer data);
349 
350 #define REGISTER_BIOSEQ_SET_EDIT ObjMgrProcLoad(OMPROC_EDIT,"Edit Bioseq Set","BioseqSetEditor",OBJ_BIOSEQSET,0,OBJ_BIOSEQSET,0,NULL,BioseqSetEditFunc,PROC_PRIORITY_DEFAULT)
351 extern Int2 LIBCALLBACK BioseqSetEditFunc (Pointer data);
352 
353 extern void LaunchOrfViewer (BioseqPtr bsp, Uint2 entityID, Uint4 itemID, Boolean standAlone);
354 
355 extern Int2 ApplyAnnotationToAll (Int2 type, SeqEntryPtr sep,
356                                   ButtoN partialLft, ButtoN partialRgt,
357                                   TexT geneName, TexT protName,
358                                   TexT protDesc, TexT rnaName,
359                                   TexT featcomment, TexT defline);
360 
361 NLM_EXTERN SeqEntryPtr SequinFastaToSeqEntryEx
362   (
363     FILE *fp, Boolean is_na, CharPtr PNTR errormsg,
364     Boolean parseSeqId, CharPtr special_symbol
365   );
366 
367 NLM_EXTERN SeqEntryPtr SequinFastaToSeqEntryExEx
368   (
369     FILE *fp,               /* file to get sequence from */
370     Boolean is_na,          /* type of sequence */
371     CharPtr PNTR errormsg,  /* error message for debugginq */
372     Boolean parseSeqId,     /* Parse SeqID from def line */
373     CharPtr special_symbol, /* Returns special symbol if no SeqEntry */
374     BoolPtr chars_stripped  /* set to TRUE if characters other than digits
375                              * were stripped from the FASTA sequence data */
376   );
377 
378 /* Many miscellaneous extern functions within sequin source files */
379 
380 extern Boolean WriteSequinAppParam (CharPtr section, CharPtr type, CharPtr value);
381 
382 extern Boolean PropagateFromGenBankBioseqSet (SeqEntryPtr sep, Boolean ask);
383 
384 extern Uint2 SmartAttachSeqAnnotToSeqEntry (Uint2 entityID, SeqAnnotPtr sap, ValNodePtr PNTR err_list);
385 extern void HandleProjectAsn (ProjectPtr proj, Uint2 entityID);
386 
387 extern CharPtr SearchForString (CharPtr str, CharPtr sub, Boolean case_counts, Boolean whole_word);
388 extern void AddAboutAndHelpMenuItems (MenU m);
389 extern void NetConfigureProc (IteM i);
390 extern void EntrezQueryProc (IteM i);
391 extern void Entrez2QueryProc (IteM i);
392 extern void SetupEditSecondary (MenU m, BaseFormPtr bfp);
393 extern void SimpleCDDSearchFeatProc (IteM i);
394 extern void SimpleCDDSearchAlignProc (IteM i);
395 extern void ForceCleanupEntityID (Uint2 entityID);
396 extern void ForceTaxonFixupBtn (IteM i, ButtoN b);
397 extern void CommonAddOrgOrModsToDefLines (IteM i, Int2 orgmod, Int2 subsource, ButtoN b);
398 extern void PrefixDefLines (IteM i);
399 extern void MRnaFromCdsProc (Uint2 entityID);
400 extern void BioseqViewFormToolBar (GrouP h);
401 extern void BioseqViewFormWGSToolBar (GrouP h);
402 extern void BioseqViewFormCustomToolBar (GrouP h);
403 extern void MakeCustomToolBarData (GrouP h, Pointer data);
404 extern Boolean DoBuildContig (void);
405 extern void SetGenome (PopuP p);
406 extern PopuP ReplaceBioSourceGencodePopup (DialoG d, PopuP gencode);
407 extern CharPtr NameStdPtrToAuthorSpreadsheetString (NameStdPtr nsp);
408 extern NameStdPtr AuthorSpreadsheetStringToNameStdPtr (CharPtr txt);
409 extern Boolean ExtendGene (GeneRefPtr grp, SeqEntryPtr nsep, SeqLocPtr slp);
410 extern void CommonAddOrgOrModsToDefLines (IteM i, Int2 orgmod, Int2 subsource, ButtoN b);
411 extern void PrepareToConvertToCDS (SeqEntryPtr sep, Uint2 entityID,
412                                    Uint2 subtype, CharPtr findthis);
413 extern void EditGenbankElements (Handle i);
414 extern void EditSequenceHistory (IteM i);
415 extern void InsertGeneLocusTagPrefix (IteM i);
416 extern void FindGeneAndProtForCDS (Uint2 entityID, SeqFeatPtr cds,
417                                    SeqFeatPtr PNTR gene, SeqFeatPtr PNTR prot);
418 extern void ExportAlignmentInterleave (IteM i);
419 extern void ExportAlignmentContiguous (IteM i);
420 extern void CombineMultipleCDS (IteM i);
421 
422 extern void NewDescriptorMenuFunc (ObjMgrProcPtr ompp, BaseFormPtr bfp, Uint2 descsubtype);
423 extern Boolean PropagateFromGenBankBioseqSet (SeqEntryPtr sep, Boolean ask);
424 extern int LIBCALLBACK SortByVnpChoice (VoidPtr ptr1, VoidPtr ptr2);
425 extern void PrepareToConvertToCDS (SeqEntryPtr sep, Uint2 entityID,
426                                    Uint2 subtype, CharPtr findthis);
427 extern void ConvertToLocalProcOnlyNucs (IteM i);
428 extern void ConvertToLocalProcOnlyProts (IteM i);
429 extern void ConvertToLocalProcAll (IteM i);
430 
431 extern void ChangeGenBankNameToLocal (IteM i);
432 extern void RemoveGBIDsFromBioseqs (IteM i);
433 extern void RemoveGBIDsFromProteins (IteM i);
434 extern void RemoveGIsFromBioseqs (IteM i);
435 
436 extern void CommonApplyToAllProc (BaseFormPtr bfp, Int2 type);
437 extern void ApplyTitle (IteM i);
438 extern void ApplyCDS (IteM i);
439 extern void ApplyRRNA (IteM i);
440 extern void ApplyImpFeat (IteM i);
441 extern void AdjustCDSLocationsForKnownAndUnknownGapsCallback (SeqFeatPtr sfp, Pointer userdata);
442 extern void AdjustFeaturesForGaps (IteM i);
443 extern void TrimCodingRegionsForNs (IteM i);
444 extern void LoadTPAAccessionNumbersFromFile (IteM i);
445 extern void LoadSecondaryAccessionNumbersFromFile (IteM i);
446 extern void LoadHistoryAccessionNumbersFromFile (IteM i);
447 extern void LoadOrganismModifierTable (IteM i);
448 extern void LoadTaxConsult (IteM i);
449 extern void ExportOrganismTable (IteM i);
450 extern void LoadFeatureQualifierTable (IteM i);
451 
452 extern void AddCodonListTotRNA (tRNAPtr trna, ValNodePtr codons);
453 
454 extern void RemoveRedundantProproteinMiscFeats (IteM i);
455 extern void AddTypeStrainCommentsToAll (IteM i);
456 extern void AddTypeStrainCommentsWithConstraint (IteM i);
457 extern void RemoveSequencesFromAlignment (IteM i);
458 extern void RemoveSequencesFromRecord (IteM i);
459 
460 extern void ParseFileToSource (IteM i);
461 extern void AddModToOrg (IteM i);
462 extern void AddModToOrgBaseForm (BaseFormPtr bfp);
463 extern void ChangeTargetBaseForm (BaseFormPtr bfp);
464 
465 
466 extern void ParseInMoreProteins (IteM i);
467 extern void ParseInNucUpdates (IteM i);
468 
469 extern void RecomputeSuggestEx (Uint2 entityID, Boolean fix_genes, Boolean recompute_all);
470 extern void RecomputeSuggest (IteM i);
471 extern void RecomputeSuggestFixGenes (IteM i);
472 extern void RetranslateCdRegionsEx (
473   Uint2   entityID,
474   Boolean include_stop,
475   Boolean no_stop_at_end_of_complete_cds );
476 extern void RetranslateCdRegionsNoStop (IteM i);
477 extern void RetranslateCdRegionsDoStop (IteM i);
478 extern void RetranslateCdRegionsNoStopExceptEndCompleteCDS (IteM i);
479 extern void AddGlobalCodeBreak (IteM i);
480 extern void ParseCodonQualToCodeBreak (IteM i);
481 
482 extern void AutoDef (IteM i);
483 extern void AutoDefWithOptions (IteM i);
484 extern void AutoDefWithoutModifiers (IteM i);
485 extern void AutoDefBaseFormCommon (BaseFormPtr bfp, Boolean use_form, Boolean use_modifiers, Boolean popset_only);
486 extern void AutoDefStrain (BaseFormPtr bfp);
487 extern void AutoDefMiscFeat (BaseFormPtr bfp);
488 extern void AutoDefToolBtn (ButtoN b);
489 extern void AutoDefOptionsToolBtn (ButtoN b);
490 extern void AutoDefStrainToolBtn (ButtoN b);
491 extern void AutoDefMiscFeatToolBtn (ButtoN b);
492 extern void AutoDefEntityIDNoOptions (Uint2 entityID, Boolean use_modifiers);
493 extern void AutoDefId (Uint2 entityID);
494 extern void AutoDefIdEx (Uint2 entityID, DefLineType feature_list_type);
495 extern void AddPopsetTitlesItem (IteM i);
496 
497 extern void RemoveDefLinesToolBtn (ButtoN b);
498 extern void FindStringProcToolBtn (ButtoN b);
499 extern void FindFlatfileProcToolBtn (ButtoN b);
500 extern void ResolveExistingLocalIDsToolBtn (ButtoN b);
501 extern void GroupExplodeToolBtn (ButtoN b);
502 
503 extern void PromoteAlignIDsProc (SeqAnnotPtr sp, Pointer data);
504 
505 extern void SetBestFrame (SeqFeatPtr sfp);
506 extern Boolean SetBestFrameByLocation (SeqFeatPtr sfp);
507 
508 extern void SetupEditSecondary (MenU m, BaseFormPtr bfp);
509 extern void EditLocusProc (IteM i);
510 
511 extern ValNodePtr BuildDescriptorValNodeList (void);
512 
513 extern void RemoveDescriptor (IteM i);
514 
515 extern void SelectDescriptor (IteM i);
516 extern void SelectBioseq (IteM i);
517 extern void SelectPubs (IteM i);
518 
519 extern void FuseFeature (IteM i);
520 
521 extern void MakeExonsFromCDSIntervals (IteM i);
522 extern void MakeExonsFromMRNAIntervals (IteM i);
523 
524 extern Int2 LIBCALLBACK CreateSegregateByTextWindow (Pointer data);
525 extern Int2 LIBCALLBACK SegregateSetsByField (Pointer data);
526 extern Int2 LIBCALLBACK CreateSegregateByFeatureWindow (Pointer data);
527 extern Int2 LIBCALLBACK CreateSegregateByDescriptorWindow (Pointer data);
528 extern Int2 LIBCALLBACK CreateSegregateByMoleculeTypeWindow (Pointer data);
529 extern Int2 LIBCALLBACK CreateSegregateByIdWindow (Pointer data);
530 extern Int2 LIBCALLBACK SequesterSequences (Pointer data);
531 extern Int2 LIBCALLBACK RemoveExtraneousSets (Pointer data);
532 extern void ReverseComplementBioseqAndFeats (BioseqPtr bsp, Uint2 entityID);
533 extern void RemoveOrphanProteins (Uint2 entityID, SeqEntryPtr sep);
534 extern void RemoveTextInsideStringBaseForm (BaseFormPtr bfp);
535 extern void RemoveTextInsideString (IteM i);
536 extern void RemoveTextOutsideStringBaseForm (BaseFormPtr bfp);
537 extern void BioseqViewFormToolBar (GrouP h);
538 
539 extern void FindStringProc (IteM i);
540 extern void FindFlatfileProc (IteM i);
541 extern void FindGeneProc (IteM i);
542 extern void FindProtProc (IteM i);
543 extern void FindPosProc (IteM i);
544 
545 extern void SimpleUniVecScreenProc (IteM i);
546 extern void SimpleUniVecCoreScreenProc (IteM i);
547 
548 extern Boolean MeetsStringConstraint (SeqFeatPtr sfp, CharPtr str, Boolean case_insensitive);
549 
550 extern Boolean SaveSeqSubmitProc (BaseFormPtr bfp, Boolean saveAs);
551 
552 extern void ExciseString (CharPtr str, CharPtr from, CharPtr to);
553 extern void MakeSearchStringFromAlist (CharPtr str, CharPtr name);
554 extern void AddToSubSource (BioSourcePtr biop, CharPtr title, CharPtr label, Uint1 subtype);
555 extern void AddToOrgMod (BioSourcePtr biop, CharPtr title, CharPtr label, Uint1 subtype);
556 extern Boolean AutomaticProteinProcess (SeqEntryPtr esep, SeqEntryPtr psep,
557                                         Int2 code, Boolean makeMRNA,
558                                         SeqLocPtr use_this);
559 
560 extern CharPtr repackageMsg;
561 extern SeqEntryPtr     globalsep;
562 extern Uint2           globalEntityID;
563 extern Char            globalPath [PATH_MAX];
564 extern ForM  startupForm;
565 extern SeqViewProcs        seqviewprocs;
566 
567 extern void CommonFetchFromNet (BtnActnProc actn, BtnActnProc cancel);
568 extern void FetchFromNet (ButtoN b);
569 extern Boolean SequinEntrezInit (CharPtr appl_id, Boolean no_warnings, BoolPtr is_network);
570 extern void JustRegisterSeqEntry (BaseFormPtr bfp, Boolean freeit);
571 extern void JustRegisterSeqEntryBtn (ButtoN b);
572 extern void AddSubmitBlockToSeqEntry (ForM f);
573 
574 extern void SqnReadAlignView (BaseFormPtr bfp, BioseqPtr target_bsp, SeqEntryPtr source_sep, Boolean do_update);
575 extern void UpdateSeqAfterDownload (BaseFormPtr bfp, BioseqPtr oldbsp, BioseqPtr newbsp);
576 extern void ExtendSeqAfterDownload (BaseFormPtr bfp, BioseqPtr oldbsp, BioseqPtr newbsp);
577 extern void NewUpdateSequence (IteM i);
578 
579 extern void ParseCodonsFromtRNAComment (IteM i);
580 extern void ParseAntiCodonsFromtRNAComment (IteM i);
581 
582 extern void RemoveAlignment (IteM i);
583 extern void RemoveGraph (IteM i);
584 
585 extern void RemoveProteins (IteM i);
586 extern void RemoveProteinsAndRenormalize (IteM i);
587 
588 extern void AddTranslExceptWithComment (IteM i);
589 extern void AddTranslExceptWithCommentBaseForm (BaseFormPtr bfp);
590 
591 extern void ReadAlignment (IteM i);
592 extern SeqEntryPtr SeqEntryFromAlignmentFile (FILE *fp, TSequenceInfoPtr sequence_info, Uint1 moltype,
593                                               CharPtr no_org_err_msg);
594 
595 extern SeqAlignPtr Sqn_GlobalAlignTwoSeq (BioseqPtr bsp1, BioseqPtr bsp2, BoolPtr revcomp);
596 
597 extern void SqnNewAlign (BioseqPtr bsp1, BioseqPtr bsp2, SeqAlignPtr PNTR salp);
598 
599 
600 #ifndef WIN_MAC
601 NLM_EXTERN MenU CreateSqnInitialFormMenus (WindoW w);
602 #endif
603 
604 #define NUM_PAGES  8
605 
606 typedef struct nucprotassoc {
607   Int4 position;
608   SeqLocPtr loc;
609   struct nucprotassoc PNTR  next;
610 } NucProtAssocData, PNTR NucProtAssocPtr;
611 
612 typedef struct sequencesform {
613   FORM_MESSAGE_BLOCK
614   GrouP           pages [NUM_PAGES];
615   Int2            currentPage;
616   Int2            tagFromPage [NUM_PAGES];
617   Int2            numPages;
618 
619   DialoG          seq_tbs;
620   DialoG          annot_tbs;
621   Boolean         show_annot;
622 
623   Uint1           dnamolfrommolinfo;
624   EnumFieldAssoc  PNTR moltypeAlist;
625   ButtoN          makeAlign;
626   DialoG          dnaseq;
627 
628   Int2            seqPackage;
629   Int2            seqFormat;
630   Int2            numSeqs;
631   Int2            submType;
632 
633   ButtoN          partialN;
634   ButtoN          partialC;
635   Boolean         makeMRNA;
636   DialoG          protseq;
637 
638   DialoG          mrnaseq;
639   ButtoN          partialmRNA5;
640   ButtoN          partialmRNA3;
641 
642   DialoG          feature_info;
643 
644   TexT            defline;
645   ButtoN          orgPrefix;
646 
647   ButtoN          nextBtn;
648   ButtoN          prevBtn;
649   BtnActnProc     goToNext;
650   BtnActnProc     goToPrev;
651 
652   /* for sequencing method */
653   DialoG          sequencing_method_dlg;
654 
655   /* These are added to add modifiers on the source tab */
656   ButtoN          import_mod_btn;
657   ButtoN          source_assist_btn;
658   ButtoN          specify_orgs_btn;
659   ButtoN          specify_locs_btn;
660   ButtoN          specify_gcode_btn;
661   ButtoN          specify_mgcode_btn;
662   ButtoN          clear_mods_btn;
663   DoC             org_doc;
664   GrouP           ident_org_grp;
665   DialoG          summary_dlg;
666 
667   /* These allow the user to specify topology and molecule */
668   ButtoN          topology_btn;
669   ButtoN          molecule_btn;
670 
671   /* for vector trimming */
672   ButtoN          vecscreen_btn;
673 
674   /* This list pairs the proteins and nucleotides. */
675   /* It must be freed using FreeAssociationList. */
676   NucProtAssocPtr nuc_prot_assoc_list;
677 
678 } SequencesForm, PNTR SequencesFormPtr;
679 
680 
681 typedef struct submissionfeatureinfo
682 {
683   Uint2           feature_type;
684   Uint1           strand;
685   Boolean         partial5;
686   Boolean         partial3;
687   CharPtr         gene_name;
688   CharPtr         product;
689   CharPtr         prot_desc;
690   CharPtr         feat_comment;
691 } SubmissionFeatureInfoData, PNTR SubmissionFeatureInfoPtr;
692 NLM_EXTERN SubmissionFeatureInfoPtr SubmissionFeatureInfoFree (SubmissionFeatureInfoPtr info);
693 
694 
695 NLM_EXTERN Boolean IsAnnotTabEmpty (SequencesFormPtr sqfp);
696 NLM_EXTERN SubmissionFeatureInfoPtr GetSubmissionFeatureInfo (SequencesFormPtr sqfp);
697 
698 extern ValNodePtr InsertMostUsedFeatureValNodes (ValNodePtr old_list);
699 
700 extern EnumFieldAssocPtr InsertMostUsedFeatureEnumFieldAssoc (
701   EnumFieldAssocPtr alist
702 );
703 
704 extern ValNodePtr BuildFeatureValNodeList (
705   Boolean prefer_most_used,
706   CharPtr wild_card_name,
707   Int4 wild_card_value,
708   Boolean skip_unusual,
709   Boolean skip_import
710 );
711 
712 extern void RemoveOldName (OrgRefPtr orp);
713 extern void SetTaxNameAndRemoveTaxRef (OrgRefPtr orp, CharPtr taxname);
714 
715 extern void MergeToPartsJoin (IteM i);
716 extern void MergeToPartsOrdered (IteM i);
717 
718 extern void InitValNodePopup (ValNodePtr list, PopuP p);
719 extern Int2 GetValNodePopup (PopuP p, ValNodePtr list);
720 extern void SetValNodePopupValue (ValNodePtr list, PopuP p, CharPtr val);
721 
722 extern Uint1 FindTypeForModNameText (CharPtr cp);
723 
724 typedef struct featureswithtextdata
725 {
726   Uint1             seqFeatChoice;
727   Uint1             featDefChoice;
728   CharPtr           search_text;
729   Boolean           case_insensitive;
730   Boolean           whole_word;
731   Boolean           no_text;
732   Boolean           act_when_string_not_present;
733   VisitFeaturesFunc callback;
734   Pointer           userdata;
735 } FeaturesWithTextData, PNTR FeaturesWithTextPtr;
736 
737 typedef struct descriptorswithtextdata
738 {
739   CharPtr           search_text;
740   Boolean           case_insensitive;
741   Boolean           whole_word;
742   Boolean           no_text;
743   Boolean           act_when_string_not_present;
744   VisitDescriptorsFunc callback;
745   Pointer           userdata;
746 } DescriptorsWithTextData, PNTR DescriptorsWithTextPtr;
747 
748 
749 extern void OperateOnBioseqFeaturesWithText
750 (BioseqPtr         bsp,
751  Pointer           userdata);
752 
753 extern void OperateOnSeqEntryFeaturesWithText (SeqEntryPtr sep, FeaturesWithTextPtr fdp);
754 extern void OperateOnSeqEntryDescriptorsWithText (SeqEntryPtr sep, DescriptorsWithTextPtr ddp);
755 
756 extern LisT
757 MakeSequenceListControl
758 (GrouP g,
759  SeqEntryPtr sep,
760  Nlm_LstActnProc actn,
761  Pointer userdata,
762  Boolean show_nucs,
763  Boolean show_prots);
764 extern ValNodePtr GetSelectedSequenceList (LisT l);
765 extern void SelectAllSequencesInListCtrl (LisT l);
766 extern void UnSelectAllSequencesInListCtrl (LisT l);
767 extern void OffsetLocation (SeqLocPtr loc, Int4 offset, SeqIdPtr sip);
768 
769 extern CharPtr kIndexerUpdateVecScreenText;
770 
771 extern Boolean AlistMessage (EnumFieldAssocPtr al, UIEnumPtr val, UIEnum dflt, CharPtr mssg);
772 
773 extern void LogCDSAmbiguousFrame (LogInfoPtr lip, SeqFeatPtr sfp);
774 
775 extern void LoadGenomeProjectIDsFromFile (IteM i);
776 extern void RemoveEmptyGenomeProjectIDs (IteM i);
777 extern void RemoveGenomeProjectIDs (IteM i);
778 
779 extern CharPtr SourceQualValNodeName (ValNodePtr vnp);
780 extern ValNodePtr SourceQualValNodeDataCopy (ValNodePtr vnp);
781 NLM_EXTERN ValNodePtr LIBCALL SourceQualValNodeCopy (ValNodePtr vnp);
782 extern Boolean SourceQualValNodeMatch (ValNodePtr vnp1, ValNodePtr vnp2);
783 
784 extern ValNodePtr GetSourceQualDescList (Boolean get_subsrc, Boolean get_orgmod, Boolean get_discouraged, Boolean get_discontinued);
785 
786 extern void FeatureRemove (IteM i);
787 extern void ConvertFeatures (IteM i);
788 extern void SelectFeatures (IteM i);
789 extern void ReverseFeatureIntervals (IteM i);
790 extern void ParseDefLineToSourceQual (IteM i);
791 extern void ParseTaxnameToSourceQual (IteM i);
792 extern void ParseFlatfileToSourceQual (IteM i);
793 extern void ParseLocalIDToSourceQual (ButtoN b);
794 extern void FeatureEvidenceEditor (IteM i);
795 extern void FeatureExceptionEditor (IteM i);
796 extern void FeaturePartialEditor (IteM i);
797 extern void FeatureStrandEditor (IteM i);
798 extern void FeatureCitationEditor (IteM i);
799 extern void FeatureExperimentEditor (IteM i);
800 extern void FeatureInferenceEditor (IteM i);
801 extern void FeaturePseudoEditor (IteM i);
802 extern void ApplySourceQual (IteM i);
803 extern void PublicApplySourceQual (IteM i);
804 extern void EditSourceQual (IteM i);
805 extern void PublicEditSourceQual (IteM i);
806 extern void ConvertSourceQual (IteM i);
807 extern void SwapSourceQual (IteM i);
808 extern void RemoveSourceQual (IteM i);
809 extern void ApplyCDSGeneProt (IteM i);
810 extern void PublicApplyCDSGeneProt (IteM i);
811 extern void EditCDSGeneProt (IteM i);
812 extern void PublicEditCDSGeneProt (IteM i);
813 extern void ConvertCDSGeneProt (IteM i);
814 extern void SwapCDSGeneProt (IteM i);
815 extern void RemoveCDSGeneProt (IteM i);
816 extern void PublicApplyRNAQual (IteM i);
817 extern void EditRNAQual (IteM i);
818 extern void PublicEditRNAQual (IteM i);
819 extern void ConvertRNAQual (IteM i);
820 extern void SwapRNAQual (IteM i);
821 extern void RemoveRNAQual (IteM i);
822 extern void ApplyGBQual (IteM i);
823 extern void PublicApplyGBQual (IteM i);
824 extern void EditGBQual (IteM i);
825 extern void PublicEditGBQual (IteM i);
826 extern void ConvertGBQual (IteM i);
827 extern void SwapGBQual (IteM i);
828 extern void RemoveGBQual (IteM i);
829 extern void ConvertLocusTagToOldLocusTag (IteM i);
830 extern void ExportLastLineage (IteM i);
831 
832 extern void MacroApplyGBQual (IteM i);
833 extern void MacroApplySourceQual (IteM i);
834 extern void MacroApplyCDSGeneProt (IteM i);
835 extern void PublicMacroApplyCDSGeneProt (IteM i);
836 extern void MacroApplyRNAQual (IteM i);
837 
838 extern void MacroRemoveGBQual (IteM i);
839 extern void MacroRemoveSourceQual (IteM i);
840 extern void MacroRemoveCDSGeneProt (IteM i);
841 extern void MacroRemoveRNAQual (IteM i);
842 
843 extern void MacroConvertGBQual (IteM i);
844 extern void MacroConvertSourceQual (IteM i);
845 extern void MacroConvertCDSGeneProt (IteM i);
846 extern void MacroConvertRNAQual (IteM i);
847 
848 extern void MacroSwapGBQual (IteM i);
849 extern void MacroSwapSourceQual (IteM i);
850 extern void MacroSwapCDSGeneProt (IteM i);
851 extern void MacroSwapRNAQual (IteM i);
852 
853 extern void MacroEditGBQual (IteM i);
854 extern void MacroEditSourceQual (IteM i);
855 extern void MacroEditCDSGeneProt (IteM i);
856 extern void PublicMacroEditCDSGeneProt (IteM i);
857 extern void MacroEditRNAQual (IteM i);
858 
859 extern void MacroApplyStructuredComment (IteM i);
860 extern void MacroEditStructuredComment (IteM i);
861 extern void MacroRemoveStructuredComment (IteM i);
862 
863 extern void PublicMacroApplyStructuredComment (IteM i);
864 extern void PublicMacroEditStructuredComment (IteM i);
865 
866 
867 /* constraint values */
868 #define LOCATION_CONSTRAINT_WHOLE_INTERVAL  1
869 #define LOCATION_CONSTRAINT_START_ENDPOINT  2
870 #define LOCATION_CONSTRAINT_STOP_ENDPOINT   3
871 
872 #define LOCATION_CONSTRAINT_ANY        1
873 #define LOCATION_CONSTRAINT_UPSTREAM   2
874 #define LOCATION_CONSTRAINT_DOWNSTREAM 3
875 #define LOCATION_CONSTRAINT_CONTAINED  4
876 #define LOCATION_CONSTRAINT_NOT_IN     5
877 #define LOCATION_CONSTRAINT_OVERLAP    6
878 #define LOCATION_CONSTRAINT_EQUAL      7
879 
880 #define LOCATION_CONSTRAINT_ANY_STRAND   1
881 #define LOCATION_CONSTRAINT_PLUS_STRAND  2
882 #define LOCATION_CONSTRAINT_MINUS_STRAND 3
883 
884 #define LOCATION_CONSTRAINT_ANY_SEQ      1
885 #define LOCATION_CONSTRAINT_NUC_SEQ      2
886 #define LOCATION_CONSTRAINT_PROT_SEQ     3
887 
888 typedef struct LocationConstraintX
889 {
890   Int4      left;
891   Int4      right;
892   Int4      interval_end_choice;
893   Int4      match_choice;
894   Int4      strand;
895   Int4      sequence_type;
896 } LocationConstraintXData, PNTR LocationConstraintXPtr;
897 
898 typedef enum
899 {
900   eStringConstraintContains = 1,
901   eStringConstraintEquals,
902   eStringConstraintStarts,
903   eStringConstraintEnds,
904   eStringConstraintInList
905 } EStringConstraintMatchLocation;
906 
907 typedef struct stringconstraint
908 {
909   CharPtr match_text;
910   Int4    match_location;
911   Boolean insensitive;
912   Boolean whole_word;
913   Boolean not_present;
914 } StringConstraintData, PNTR StringConstraintXPtr;
915 
916 extern StringConstraintXPtr StringConstraintXFree (StringConstraintXPtr scp);
917 
918 typedef struct pseudoconstraint
919 {
920   Boolean is_pseudo;
921   Int4    featdef_type;
922 } PseudoConstraintData, PNTR PseudoConstraintPtr;
923 
924 #define CHOICE_CONSTRAINT_ANY          1
925 #define CHOICE_CONSTRAINT_QUAL_PRESENT 3
926 #define CHOICE_CONSTRAINT_STRING       5
927 #define CHOICE_CONSTRAINT_MATCH        7
928 #define CHOICE_CONSTRAINT_PSEUDO       9
929 
930 typedef struct choiceconstraint
931 {
932   Int4                constraint_type;
933   ValNodePtr          qual_choice;
934   ValNodePtr          qual_choice_match;
935   StringConstraintXPtr string_constraint;
936   PseudoConstraintPtr pseudo_constraint;
937   FreeValNodeProc     free_vn_proc;
938   CopyValNodeDataProc copy_vn_proc;
939 } ChoiceConstraintData, PNTR ChoiceConstraintPtr;
940 
941 extern ChoiceConstraintPtr ChoiceConstraintFree (ChoiceConstraintPtr scp);
942 
943 typedef struct sequenceconstraint
944 {
945   Boolean nucs_ok;
946   Boolean prots_ok;
947 
948   Int4                other_constraint_type;
949   StringConstraintXPtr string_constraint;
950   ChoiceConstraintPtr source_constraint;
951   ValNodePtr          feature_list;
952 
953 } SequenceConstraintXData, PNTR SequenceConstraintXPtr;
954 
955 extern SequenceConstraintXPtr SequenceConstraintXFree (SequenceConstraintXPtr scp);
956 extern DialoG SequenceConstraintXDialog (GrouP g);
957 extern Boolean DoesSequenceMatchSequenceConstraintX (BioseqPtr bsp, SequenceConstraintXPtr scp);
958 
959 
960 
961 typedef struct filterset
962 {
963   StringConstraintXPtr   scp;
964   ChoiceConstraintPtr   ccp;
965   LocationConstraintXPtr lcp;
966   ChoiceConstraintPtr   cgp;
967   StringConstraintXPtr   id_list;
968 } FilterSetData, PNTR FilterSetPtr;
969 
970 extern void FilterSetClearText (FilterSetPtr fsp);
971 extern FilterSetPtr FilterSetNew (void);
972 extern FilterSetPtr FilterSetFree (FilterSetPtr fsp);
973 
974 extern Boolean DoesStringMatchConstraintX (CharPtr pchSource, StringConstraintXPtr scp);
975 
976 typedef CharPtr (*GetFeatureFieldString) PROTO ((SeqFeatPtr, ValNodePtr, FilterSetPtr));
977 typedef void (*SetFeatureFieldString) PROTO ((SeqFeatPtr, Pointer, FilterSetPtr));
978 typedef void (*RemoveFeatureFieldString) PROTO ((SeqFeatPtr, Pointer, FilterSetPtr));
979 typedef CharPtr (*GetDescriptorFieldString) PROTO ((SeqDescrPtr, ValNodePtr, FilterSetPtr));
980 typedef void (*SetDescriptorFieldString) PROTO ((SeqDescrPtr, Pointer, FilterSetPtr));
981 typedef void (*RemoveDescriptorFieldString) PROTO ((SeqDescrPtr, Pointer, FilterSetPtr));
982 typedef void (*FeatureActionProc) PROTO ((SeqFeatPtr, Pointer, FilterSetPtr));
983 typedef void (*DescriptorActionProc) PROTO ((SeqDescrPtr, Pointer, FilterSetPtr));
984 typedef Boolean (*OkToPreSample) PROTO ((Uint2 entityID));
985 
986 extern void
987 OperateOnSeqEntryConstrainedObjects
988 (SeqEntryPtr           sep,
989  FilterSetPtr          fsp,
990  FeatureActionProc     feature_action,
991  DescriptorActionProc  descriptor_action,
992  Uint1                 seqFeatChoice,
993  Uint1                 featDefChoice,
994  Uint1                 descriptorChoice,
995  Pointer               userdata);
996 
997 extern CharPtr HandleApplyValue (CharPtr orig_text, ApplyValuePtr avp);
998 extern ValNodePtr
999 ApplyValueToValNodeStringList
1000 (ValNodePtr list, Int2 choice, ApplyValuePtr avp);
1001 
1002 typedef  Boolean (*Nlm_AcceptActnProc) PROTO((Pointer));
1003 typedef  void  (*Nlm_CancelActnProc) PROTO ((Pointer));
1004 typedef  void  (*Nlm_ClearActnProc) PROTO ((Pointer));
1005 typedef  void  (*Nlm_ClearTextActnProc) PROTO ((Pointer));
1006 
1007 extern ValNodePtr ValNodeFuncFree (ValNodePtr vnp, FreeValNodeProc free_vn_proc);
1008 
1009 typedef struct textportion
1010 {
1011   Int4    start_choice;
1012   CharPtr start_text;
1013   Int4    end_choice;
1014   CharPtr end_text;
1015   Boolean insensitive;
1016   Boolean whole_word;
1017 } TextPortionXData, PNTR TextPortionXPtr;
1018 
1019 extern TextPortionXPtr TextPortionXFree (TextPortionXPtr tp);
1020 extern void
1021 FindTextPortionXInString
1022 (CharPtr        str,
1023  TextPortionXPtr tp,
1024  CharPtr PNTR   ploc,
1025  Int4Ptr        plen);
1026 
1027 extern DialoG TextPortionXDialogEx (GrouP h, Boolean inside, Nlm_ChangeNotifyProc change_notify, Pointer change_userdata);
1028 extern DialoG TextPortionXDialog (GrouP h);
1029 
1030 #define CONVERT_TYPE_MOVE  0
1031 #define CONVERT_TYPE_COPY  1
1032 #define CONVERT_TYPE_SWAP  2
1033 #define CONVERT_TYPE_PARSE 3
1034 
1035 typedef struct convertfield
1036 {
1037   ValNodePtr                  src_field_list;
1038   ValNodePtr                  dst_field_list;
1039   ExistingTextPtr             etp;
1040   Int2                        convert_type;
1041   GetFeatureFieldString       get_str_func;
1042   SetFeatureFieldString       set_str_func;
1043   RemoveFeatureFieldString    remove_str_func;
1044   GetDescriptorFieldString    get_d_str_func;
1045   SetDescriptorFieldString    set_d_str_func;
1046   RemoveDescriptorFieldString remove_d_str_func;
1047   NameFromValNodeProc         name_field_func;
1048   FilterSetPtr                fsp;
1049   TextPortionXPtr              text_portion;
1050   Boolean                     strip_name_from_text;
1051   Boolean                     remove_parsed;
1052 } ConvertFieldData, PNTR ConvertFieldPtr;
1053 
1054 extern DialoG StringConstraintDialogX (GrouP h, CharPtr label, Boolean clear_btn);
1055 extern DialoG LocationConstraintXDialog (GrouP h, Boolean show_interval_controls, Boolean clear_btn);
1056 
1057 enum pub_field_nums
1058 {
1059   PUB_FIELD_ANY = 0,
1060   PUB_FIELD_TITLE,
1061   PUB_FIELD_FIRST_NAME,
1062   PUB_FIELD_MIDDLE_INITIAL,
1063   PUB_FIELD_LAST_NAME,
1064   PUB_FIELD_SUFFIX,
1065   PUB_FIELD_CONSORTIUM,
1066   PUB_FIELD_INSTITUTION,
1067   PUB_FIELD_DEPARTMENT,
1068   PUB_FIELD_ADDRESS,
1069   PUB_FIELD_CITY,
1070   PUB_FIELD_STATE,
1071   PUB_FIELD_COUNTRY,
1072   PUB_FIELD_ZIP,
1073   PUB_FIELD_EMAIL,
1074   PUB_FIELD_PHONE,
1075   PUB_FIELD_FAX
1076 };
1077 
1078 enum pub_status
1079 {
1080   PUB_STAT_ANY = 0,
1081   PUB_STAT_PUBLISHED,
1082   PUB_STAT_UNPUBLISHED,
1083   PUB_STAT_INPRESS,
1084   PUB_STAT_PUBLISHED_SUBMISSION
1085 };
1086 
1087 typedef struct pubconstraint
1088 {
1089   CharPtr find_str;
1090   Int4    field_for_find;
1091   Boolean insensitive_to_case;
1092   Int4    pub_status;
1093 } PubConstraintData, PNTR PubConstraintPtr;
1094 
1095 extern PubConstraintPtr PubConstraintFree (PubConstraintPtr pcp);
1096 extern DialoG PubConstraintDialog (GrouP h);
1097 
1098 extern DialoG AcceptCancelDialog
1099 (GrouP                 parent,
1100  Nlm_AcceptActnProc    accept_actn,
1101  Nlm_CancelActnProc    cancel_actn,
1102  Nlm_ClearActnProc     clear_actn,
1103  Nlm_ClearTextActnProc clear_text_actn,
1104  Pointer               userdata,
1105  WindoW                w);
1106 extern void EnableAcceptCancelDialogAccept (DialoG d);
1107 extern void DisableAcceptCancelDialogAccept (DialoG d);
1108 
1109 /* note - set sep to NULL if you don't want to limit the list to the features present */
1110 extern ValNodePtr BuildFeatureDialogList (Boolean list_most_used_first, SeqEntryPtr sep);
1111 
1112 extern DialoG
1113 FeatureSelectionDialog
1114 (GrouP                    h,
1115  Boolean                  allow_multi,
1116  Nlm_ChangeNotifyProc     change_notify,
1117  Pointer                  change_userdata);
1118 
1119 extern DialoG
1120 FeatureSelectionDialogEx
1121 (GrouP                    h,
1122  Boolean                  allow_multi,
1123  SeqEntryPtr              sep,
1124  Nlm_ChangeNotifyProc     change_notify,
1125  Pointer                  change_userdata);
1126 
1127 extern DialoG
1128 DescriptorSelectionDialog
1129 (GrouP                    h,
1130  Boolean                  allow_multi,
1131  Nlm_ChangeNotifyProc     change_notify,
1132  Pointer                  change_userdata);
1133 
1134 extern DialoG SourceQualTypeSelectionDialog
1135 (GrouP h,
1136  Boolean                  allow_multi,
1137  Nlm_ChangeNotifyProc     change_notify,
1138  Pointer                  change_userdata);
1139 
1140 extern DialoG
1141 FeatureFieldSelectionDialog
1142 (GrouP                    h,
1143  Boolean                  allow_none,
1144  Int4                     num_fields,
1145  CharPtr PNTR             field_names,
1146  Nlm_ChangeNotifyProc     change_notify,
1147  Pointer                  change_userdata);
1148 
1149 extern DialoG
1150 GeneFieldSelectionDialog
1151 (GrouP                    h,
1152  Boolean                  allow_none,
1153  Nlm_ChangeNotifyProc     change_notify,
1154  Pointer                  change_userdata);
1155 extern CharPtr GetGeneFieldString (SeqFeatPtr sfp, ValNodePtr gene_field, FilterSetPtr fsp);
1156 extern void RemoveGeneFieldString (SeqFeatPtr sfp, ValNodePtr gene_field);
1157 
1158 extern DialoG
1159 MRNAFieldSelectionDialog
1160 (GrouP                    h,
1161  Boolean                  allow_none,
1162  Nlm_ChangeNotifyProc     change_notify,
1163  Pointer                  change_userdata);
1164 extern CharPtr GetmRNAFieldString (SeqFeatPtr sfp, ValNodePtr mrna_field, FilterSetPtr fsp);
1165 extern void RemovemRNAFieldString (SeqFeatPtr sfp, ValNodePtr mrna_field);
1166 extern CharPtr GetCDSFieldString (SeqFeatPtr sfp, ValNodePtr cds_field, FilterSetPtr fsp);
1167 extern void RemoveCDSFieldString (SeqFeatPtr sfp, ValNodePtr cds_field);
1168 extern CharPtr GetProteinFieldString (SeqFeatPtr sfp, ValNodePtr protein_field, FilterSetPtr fsp);
1169 
1170 extern DialoG
1171 ProteinFieldSelectionDialog
1172 (GrouP                    h,
1173  Boolean                  allow_none,
1174  Nlm_ChangeNotifyProc     change_notify,
1175  Pointer                  change_userdata);
1176 
1177 extern DialoG
1178 CDSGeneProtFieldSelectionDialog
1179 (GrouP                    h,
1180  Boolean                  allow_none,
1181  Nlm_ChangeNotifyProc     change_notify,
1182  Pointer                  change_userdata);
1183 extern CharPtr GetCDSGeneProtField (SeqFeatPtr sfp, ValNodePtr vnp, FilterSetPtr fsp);
1184 extern Boolean
1185 SetCDSGeneProtField
1186 (SeqFeatPtr      sfp,
1187  ValNodePtr      vnp,
1188  ApplyValuePtr   avp,
1189  FilterSetPtr    fsp);
1190 extern void RemoveCDSGeneProtField (SeqFeatPtr sfp, ValNodePtr vnp, FilterSetPtr fsp);
1191 extern Uint2 FeatDefTypeFromFieldList (ValNodePtr vnp);
1192 extern Boolean IsCDSetProteinProductChoice (ValNodePtr vnp);
1193 extern CharPtr GetCDSGeneProtFieldName (ValNodePtr vnp);
1194 
1195 extern DialoG
1196 RNAAddFieldSelectionDialog
1197 (GrouP                    h,
1198  Boolean                  allow_multi,
1199  Nlm_ChangeNotifyProc     change_notify,
1200  Pointer                  change_userdata);
1201 
1202 extern DialoG
1203 RNARemoveFieldSelectionDialog
1204 (GrouP                    h,
1205  Boolean                  allow_multi,
1206  Nlm_ChangeNotifyProc     change_notify,
1207  Pointer                  change_userdata);
1208 
1209 extern DialoG
1210 RNAFieldSelectionDialog
1211 (GrouP                    h,
1212  Boolean                  allow_multi,
1213  Nlm_ChangeNotifyProc     change_notify,
1214  Pointer                  change_userdata);
1215 
1216 extern CharPtr GetRNAFieldString (SeqFeatPtr sfp, ValNodePtr vnp, FilterSetPtr fsp);
1217 
1218 extern DialoG
1219 ExonFieldSelectionDialog
1220 (GrouP                    h,
1221  Boolean                  allow_none,
1222  Nlm_ChangeNotifyProc     change_notify,
1223  Pointer                  change_userdata);
1224 extern CharPtr GetExonFieldString (SeqFeatPtr sfp, ValNodePtr exon_field);
1225 extern void RemoveExonFieldString (SeqFeatPtr sfp, ValNodePtr exon_field);
1226 
1227 typedef  DialoG  (*FeatureFieldSelectionProc) PROTO((GrouP, Boolean, Nlm_ChangeNotifyProc, Pointer));
1228 
1229 extern DialoG FeatureFieldChoiceDialog
1230 (GrouP h,
1231  FeatureFieldSelectionProc make_fieldlist_dlg,
1232  Boolean                   offer_to_remove,
1233  Nlm_ChangeNotifyProc      change_notify,
1234  Pointer                   change_userdata);
1235 
1236 extern DialoG BioSourceStringDialog
1237 (GrouP                    h,
1238  Boolean                  allow_multi,
1239  Nlm_ChangeNotifyProc     change_notify,
1240  Pointer                  change_userdata);
1241 
1242 extern DialoG
1243 ConstraintChoiceDialog
1244 (GrouP                     h,
1245  FeatureFieldSelectionProc present_func,
1246  FeatureFieldSelectionProc string_func,
1247  FreeValNodeProc           free_vn_proc,
1248  CopyValNodeDataProc       copy_vn_proc,
1249  CharPtr                   present_name,
1250  CharPtr                   text_name,
1251  Boolean                   clear_btn,
1252  Boolean                   use_pseudo);
1253 extern DialoG SourceConstraintDialogX (GrouP h, Boolean clear_btn);
1254 extern Boolean DoesOneSourceMatchConstraint (BioSourcePtr biop, ChoiceConstraintPtr scp);
1255 extern DialoG CDSGeneProtConstraintDialog (GrouP h, Boolean clear_btn);
1256 extern DialoG
1257 FilterGroup
1258 (GrouP h,
1259  Boolean has_string_constraint,
1260  Boolean has_source_constraint,
1261  Boolean has_location_constraint,
1262  Boolean has_cds_gene_prot_constraint,
1263  Boolean has_id_list_constraint,
1264  CharPtr string_constraint_label);
1265 
1266 typedef struct parsefield
1267 {
1268   Int4        parse_field_type;
1269   ValNodePtr  feature_field;
1270   ValNodePtr  feature_subtype;
1271   Boolean     do_feat;
1272   Boolean     do_desc;
1273 } ParseFieldData, PNTR ParseFieldPtr;
1274 
1275 extern ParseFieldPtr ParseFieldFree (ParseFieldPtr pfp);
1276 
1277 extern DialoG ParseFieldDestDialogEx
1278 (GrouP                    h,
1279  Nlm_ChangeNotifyProc     change_notify,
1280  Pointer                  change_userdata,
1281  Boolean                  is_search_field,
1282  Boolean                  include_dbxref);
1283 extern DialoG ParseFieldDestDialog
1284 (GrouP                    h,
1285  Nlm_ChangeNotifyProc     change_notify,
1286  Pointer                  change_userdata);
1287 extern DialoG ParseFieldSourceDialog
1288 (GrouP                    h,
1289  SeqEntryPtr              sep,
1290  Nlm_ChangeNotifyProc     change_notify,
1291  Pointer                  change_userdata);
1292 
1293 extern DialoG SampleDialog (GrouP h);
1294 
1295 extern NucProtAssocPtr FreeAssociationList (NucProtAssocPtr assoc_list);
1296 extern NucProtAssocPtr
1297 AssignProteinsForSequenceSet
1298 (SeqEntryPtr nuc_list,
1299  SeqEntryPtr prot_list,
1300  Boolean always_review);
1301 
1302 extern CharPtr
1303 CreateListMessage
1304 (CharPtr    msg_before,
1305  CharPtr    msg_after,
1306  ValNodePtr id_list);
1307 
1308 
1309 extern Boolean ExportSubmitterBlockTemplate (SeqEntryPtr sep, SeqDescrPtr sdp);
1310 extern DialoG OrganismSelectionDialog (GrouP parent, CharPtr org_name);
1311 
1312 typedef struct getsample
1313 {
1314   GetFeatureFieldString    fieldstring_func;
1315   GetDescriptorFieldString descrstring_func;
1316 
1317   ValNodePtr               feat_dest_list;
1318   ValNodePtr               descr_dest_list;
1319 
1320   ValNodePtr               requested_field;
1321   FreeValNodeProc          free_vn_proc;
1322   CopyValNodeDataProc      copy_vn_proc;
1323 
1324   CharPtr                  sample_text;
1325   Int4                     num_found;
1326   Boolean                  all_same;
1327 } GetSampleData, PNTR GetSamplePtr;
1328 
1329 extern GetSamplePtr GetSampleNew (void);
1330 extern GetSamplePtr GetSampleFree (GetSamplePtr gsp);
1331 
1332 
1333 extern void ApplyGDSKeyword (IteM i);
1334 extern void ApplyTPAInferentialKeyword (IteM i);
1335 extern void ApplyTPAExperimentalKeyword (IteM i);
1336 extern void ApplyTPAReassemblyKeyword (IteM i);
1337 extern void RemoveKeywordWithStringConstraint (IteM i);
1338 
1339 #if defined(OS_UNIX) || defined(OS_MSWIN)
1340 extern Int2 LIBCALLBACK CorrectRNAStrandedness (Pointer data);
1341 extern Int2 LIBCALLBACK CorrectRNAStrandednessUseSmart (Pointer data);
1342 #endif
1343 
1344 extern void AddGeneFeatureFromTitle (SeqEntryPtr nucsep, CharPtr ttl,  SeqLocPtr slp);
1345 extern SeqFeatPtr AddProteinFeatureFromDefline (SeqEntryPtr psep, CharPtr title);
1346 extern void AddCodingRegionFieldsFromProteinTitle (CdRegionPtr crp, CharPtr title, CharPtr PNTR pcomment);
1347 extern Boolean ReplaceImportModifierName (CharPtr PNTR orig_name, Int4 col_num, ValNodePtr preferred_list);
1348 
1349 extern SeqEntryPtr
1350 ImportSequencesFromFileExEx
1351 (FILE           *fp,
1352  SeqEntryPtr     sep_list,
1353  Boolean         is_na,
1354  Boolean         parse_id,
1355  CharPtr         supplied_id_txt,
1356  ValNodePtr PNTR err_msg_list,
1357  BoolPtr         chars_stripped,
1358  Boolean         allow_char_stripping,
1359  Nlm_ImportSeqCallbackProc callback,
1360  Pointer         callback_data);
1361 
1362 extern SeqEntryPtr
1363 ImportSequencesFromFileEx
1364 (FILE           *fp,
1365  SeqEntryPtr     sep_list,
1366  Boolean         is_na,
1367  Boolean         parse_id,
1368  CharPtr         supplied_id_txt,
1369  ValNodePtr PNTR err_msg_list,
1370  BoolPtr         chars_stripped,
1371  Boolean         allow_char_stripping);
1372 
1373 extern SeqEntryPtr
1374 ImportSequencesFromFile
1375 (FILE           *fp,
1376  SeqEntryPtr     sep_list,
1377  Boolean         is_na,
1378  Boolean         parse_id,
1379  CharPtr         supplied_id_txt,
1380  ValNodePtr PNTR err_msg_list,
1381  BoolPtr         chars_stripped);
1382 
1383 extern void TestUpdateSequenceIndexer (IteM i);
1384 extern void TestUpdateSequenceClipboardIndexer (IteM i);
1385 extern void TestUpdateSequenceSubmitter (IteM i);
1386 extern void TestExtendSequenceIndexer (IteM i);
1387 extern void TestExtendSequenceSubmitter (IteM i);
1388 extern void TestUpdateSequenceSetIndexer (IteM i);
1389 extern void TestUpdateSequenceSetClipboardIndexer (IteM i);
1390 extern void TestUpdateSequenceSetSubmitter (IteM i);
1391 extern void TestExtendSequenceSetIndexer (IteM i);
1392 extern void TestExtendSequenceSetSubmitter (IteM i);
1393 extern void UpdateSequenceViaDownloadIndexer (IteM i);
1394 extern void UpdateSequenceViaDownloadSubmitter (IteM i);
1395 
1396 extern void
1397 ListBioseqsInSeqEntry
1398 (SeqEntryPtr     sep,
1399  Boolean         is_na,
1400  Int4Ptr         seq_num,
1401  ValNodePtr PNTR bioseq_list);
1402 
1403 extern void RecomputeSuggestedIntervalsForCDS
1404 (Uint2          entityID,
1405  BioseqPtr PNTR batchbsp,
1406  Int4Ptr        count,
1407  MonitorPtr     mon,
1408  SeqFeatPtr     sfp);
1409 
1410  typedef struct recompdata {
1411   Int4        count;
1412   MonitorPtr  mon;
1413   BioseqPtr   batchbsp;
1414   Boolean     include_stop;
1415   Boolean     no_stop_at_end_of_complete_cds;
1416   Boolean     fix_genes;
1417   Uint2       entityID;
1418 } RecompData, PNTR RecompDataPtr;
1419 
1420 extern void RecomputeIntervalsForOneCDS (SeqFeatPtr sfp, RecompDataPtr rdp);
1421 
1422 
1423 extern CharPtr ExtendProtein3
1424 (SeqFeatPtr sfp,
1425  Uint2      input_entityID,
1426  Boolean    force_partial);
1427 
1428 extern SeqLocPtr
1429 ExpandSeqLoc
1430 (Int4 start,
1431  Int4 stop,
1432  Uint1 strand,
1433  BioseqPtr bsp,
1434  SeqLocPtr slp);
1435 
1436 extern void SetSeqLocStrand (SeqLocPtr location, Uint1 strand);
1437 extern void SetPrimerBindPairStrands (IteM i);
1438 
1439 extern void ConvertSelectedGapFeaturesToKnown (IteM i);
1440 extern void ConvertSelectedGapFeaturesToUnknown (IteM i);
1441 extern void CombineAdjacentGaps (IteM i);
1442 
1443 extern void CombineAdjacentGapsOnBioseq (BioseqPtr bsp, Pointer userdata);
1444 
1445 extern void MarkGenesWithPseudoFeaturesPseudo (IteM i);
1446 
1447 typedef struct gaplocinfo
1448 {
1449   Int4    start_pos;
1450   Boolean is_known;
1451   Int4    length;
1452   Boolean replace;
1453 } GapLocInfoData, PNTR GapLocInfoPtr;
1454 
1455 extern void
1456 PrepareCodingRegionLocationsForDeltaConversionCallback
1457 (BioseqPtr bsp, Pointer userdata);
1458 
1459 extern void RemoveNomenclature (IteM i);
1460 
1461 extern void ParseCollectionDateMonthFirst (IteM i);
1462 extern void ParseCollectionDateDayFirst (IteM i);
1463 extern void RemoveUnpublishedPublications (IteM i);
1464 extern void RemovePublishedPublications (IteM i);
1465 extern void RemoveUnindexedFeatures (IteM i);
1466 
1467 typedef struct cdsconversionopts {
1468   Boolean all_are_pseudo;
1469   Boolean remove_mrna;
1470   Boolean remove_gene;
1471   Boolean remove_transcript_id;
1472   Boolean only_pseudo;
1473 } CDSConversionOptsData, PNTR CDSConversionOptsPtr;
1474 
1475 extern Boolean IsFeatInGPS (SeqFeatPtr sfp);
1476 
1477 typedef struct cdstomiscfeat {
1478   Boolean              viral;
1479   Boolean              must_have_stops;
1480   CDSConversionOptsPtr opts;
1481 } CDStoMiscFeatData, PNTR CDStoMiscFeatPtr;
1482 
1483 extern void ConvertCDSToMiscFeat (SeqFeatPtr sfp, Pointer userdata);
1484 
1485 extern void ConvertCodingRegionsWithInternalKnownGapToMiscFeat (IteM i);
1486 
1487 extern void FixOneAlignmentOverGaps (SeqAlignPtr salp, Uint2 entityID);
1488 extern void ConsolidateSegmentsOverKnownLengthGaps (SeqAlignPtr salp);
1489 
1490 extern void CreateReportWindow (EDiscrepancyReportType report_type);
1491 extern void ScrollToDiscrepancyItem (ValNodePtr vnp, Pointer userdata);
1492 extern void EditDiscrepancyItem (ValNodePtr vnp, Pointer userdata);
1493 extern void WriteClickableListReport (FILE *fp, ValNodePtr discrepancy_list, Boolean show_all, Boolean use_feature_table_fmt);
1494 
1495 extern void ConvertGapFeaturesToUnknown (IteM i);
1496 extern void ChangeKnownGapLength (IteM i);
1497 extern void AddFlankingNsToKnownLengthGaps (IteM i);
1498 
1499 extern Int2 GetSequinAppParam (CharPtr section, CharPtr type, CharPtr dflt, CharPtr buf, Int2 buflen);
1500 extern Boolean DoBioseqFeaturesMatchSequenceConstraintX (BioseqPtr bsp, ValNodePtr feat_list, StringConstraintXPtr scp);
1501 extern Boolean DoesIDListMeetStringConstraint (SeqIdPtr sip, StringConstraintXPtr string_constraint);
1502 extern Int2 LIBCALLBACK ReorderSetByAccession (Pointer data);
1503 
1504 extern void MapFeaturesToProteinSequence(IteM i);
1505 
1506 extern void FindContig (IteM i);
1507 extern ValNodePtr FreeSeqIdList (ValNodePtr id_list);
1508 extern void DownloadAndDisplay (SeqIdPtr sip);
1509 extern void LaunchDisplay (Uint2 entityID);
1510 extern void SetBioseqViewTargetByBioseq (BaseFormPtr bfp, BioseqPtr bsp);
1511 
1512 extern Boolean ShowDeltaReport (SeqEntryPtr sep);
1513 extern void DeltaReport (IteM  i);
1514 
1515 extern void ConvertLocalToGeneral(IteM i);
1516 
1517 extern void FixLastExonLocNoPartial (IteM i);
1518 extern void FixLastExonLocMakePartial (IteM i);
1519 
1520 extern void RemoveGeneByUnderlyingFeatureType(IteM i);
1521 
1522 extern void RemoveIntronLocationsFromCDS (IteM i);
1523 extern void RemoveIntronLocationsFromrRNA (IteM i);
1524 extern void RemoveIntronLocationsFromtRNA (IteM i);
1525 extern void RemoveIntronLocationsFrommRNA (IteM i);
1526 
1527 extern Int2 AddSeqAlignForSeqEntry (SeqEntryPtr sep, Uint2 entityID, Boolean choose_master, Boolean use_new_blast);
1528 
1529 extern ValNodePtr ChooseFeaturesForConversion (ValNodePtr clickable_list, BaseFormPtr bfp, CharPtr label1, CharPtr label2);
1530 extern void RemoveBadPubs (IteM i);
1531 extern void VecScreenTool (IteM i);
1532 extern void CalculateVectorDescription (ClickableItemPtr cip);
1533 NLM_EXTERN void CalculateVectorDescriptionEx (ClickableItemPtr cip, BioseqPtr bsp);
1534 
1535 extern void BarcodeTestTool (IteM i);
1536 
1537 extern void NewSUC (ValNodePtr suc_list, Uint2 entityID, Boolean reverse, Boolean byblock, Boolean showsequence);
1538 extern ValNodePtr GetSUCCommonList (SeqEntryPtr sep, Boolean reverse, Boolean byblock, Boolean showsequence, Boolean byqual);
1539 extern ValNodePtr CategorizeSUCBlocks (ValNodePtr head);
1540 
1541 extern void MakeGeneralIDsFromLocusTags (IteM i);
1542 
1543 extern void ShowClickableItemList (ValNodePtr clickable_list, BaseFormPtr bfp, CharPtr win_title, CharPtr label1, CharPtr label2);
1544 
1545 extern Int4 CountChosenDiscrepancies (ValNodePtr discrepancy_list, Boolean count_all);
1546 extern void AddTranslExcept (SeqFeatPtr sfp, CharPtr cds_comment, Boolean use_strict, Boolean extend, Boolean adjust_gene);
1547 
1548 enum table_data_errors
1549 {
1550   TABLE_DATA_NO_ERROR = 0,
1551   TABLE_DATA_ALREADY_HAS,
1552   TABLE_DATA_CELL_BLANK,
1553   TABLE_DATA_MULTIPLE_VALUES,
1554   TABLE_DATA_NOT_FOUND
1555 };
1556 
1557 extern Boolean
1558 GetTableOptions
1559 (BaseFormPtr bfp,
1560  ValNodePtr clickable_list,
1561  CharPtr win_title,
1562  CharPtr label1,
1563  CharPtr label2,
1564  CharPtr skip_already_txt,
1565  CharPtr blanks_erase_txt,
1566  BoolPtr skip_already_has,
1567  BoolPtr blanks_erase);
1568 
1569 extern void MakeCDSmRNAPairs (IteM i);
1570 
1571 extern void Apply16SRNA (IteM i);
1572 extern void Apply23SRNA (IteM i);
1573 extern void Apply18SRNA (IteM i);
1574 extern void Apply28SRNA (IteM i);
1575 extern void Apply26SRNA (IteM i);
1576 extern void Apply12SRNA (IteM i);
1577 extern void ApplySmallRNA (IteM i);
1578 extern void ApplyLargeRNA (IteM i);
1579 
1580 /* capitalization */
1581 extern void GetOrgNamesInRecordCallback (BioSourcePtr biop, Pointer userdata);
1582 
1583 extern void ApplyRNA_ITS (IteM i);
1584 
1585 extern BioSourcePtr ExtractFromDeflineToBioSource (CharPtr defline, BioSourcePtr biop);
1586 extern BioSourcePtr
1587 ExtractFromTitleToBioSourceOrgMod
1588 (CharPtr      title,
1589  BioSourcePtr biop,
1590  CharPtr      mod_name,
1591  Int4         subtype);
1592 extern BioSourcePtr
1593 ExtractFromTitleToBioSourceSubSource
1594 (CharPtr      title,
1595  BioSourcePtr biop,
1596  CharPtr      mod_name,
1597  Int4         subtype);
1598 extern BioSourcePtr
1599 ExtractFromTitleToBioSourceCommonName
1600 (CharPtr      title,
1601  BioSourcePtr biop);
1602 
1603 extern void CDSmRNALinkTool (IteM i);
1604 
1605 extern void CombineToCreatePseudoGene (IteM i);
1606 
1607 NLM_EXTERN void BulkEditCDS (IteM i);
1608 NLM_EXTERN void BulkEditCDSBaseForm (BaseFormPtr bfp);
1609 extern void BulkEditGene (IteM i);
1610 extern void BulkEditRNA (IteM i);
1611 extern void BulkEditSource (IteM i);
1612 
1613 extern void BulkEditorFeatList (Uint2 entityID, ValNodePtr feat_list);
1614 extern void BulkEditorDescrList (Uint2 entityID, ValNodePtr descr_list);
1615 extern void BulkEditDiscrepancy (ValNodePtr vnp, Pointer userdata);
1616 extern void BulkEditorCheckAllDialog (DialoG dlg);
1617 
1618 extern Uint1 GetSubtypeForBulkEdit (ValNodePtr feat_list);
1619 
1620 extern CDSConversionOptsPtr
1621 GetCDSConversionOptions (Boolean all_are_pseudo, Boolean any_pseudo, Boolean any_gps, BoolPtr cancel);
1622 
1623 extern Boolean
1624 ConvertOneCDSToMiscFeat
1625 (SeqFeatPtr sfp,
1626  Boolean viral,
1627  Boolean must_have_stops,
1628  CDSConversionOptsPtr opts);
1629 
1630 extern void SuppressGenesOnFeaturesInsideMobileElements (IteM i);
1631 
1632 extern BaseFormPtr GetBaseFormForEntityID (Uint2 entityID);
1633 
1634 extern ValNodePtr ParseAccessionNumberListFromString (CharPtr list_str, SeqEntryPtr sep);
1635 
1636 extern SubSourcePtr FindBadLatLon (BioSourcePtr biop);
1637 extern DialoG LatLonTestResultsDisplay (GrouP h);
1638 extern void LatLonTool (IteM i);
1639 extern DialoG SpecificHostResultsDisplay (GrouP h);
1640 extern void FixSpecificHostValues (IteM i);
1641 extern DialoG LatLonCountryResultsDisplay (GrouP h);
1642 extern Pointer GetLatLonCountryCorrection (Uint1 data_choice, Pointer data, Pointer metadata);
1643 extern void LatLonCountryTool (IteM i);
1644 extern DialoG CountryTestResultsDisplay (GrouP h, Pointer metadata);
1645 extern void CountryFixupTool (IteM i);
1646 
1647 extern DialoG TaxFixDisplay (GrouP h);
1648 extern Boolean IsTaxNameBad (OrgRefPtr org);
1649 extern void TaxFixTool (IteM i);
1650 
1651 extern void SetTransgenicOnSourceDescWhenSourceFeatPresent (IteM i);
1652 
1653 extern void MakeBadSpecificHostValueTable (IteM i);
1654 
1655 extern const char *nucleotide_alphabet;
1656 extern const char *protein_alphabet;
1657 
1658 extern TSequenceInfoPtr GetDefaultSequenceInfo (void);
1659 
1660 
1661 extern void ListFailedTaxonomyLookups (IteM i);
1662 
1663 extern void LoadFeatureFieldTable (IteM i);
1664 
1665 /* structure used for taxname options for loading values froma table or the Apply/Edit/Convert/Remove dialogs */
1666 typedef struct taxnameoptions {
1667  Boolean remove_taxref;
1668  Boolean remove_old_name;
1669  Boolean remove_common;
1670 } TaxnameOptionsData, PNTR TaxnameOptionsPtr;
1671 
1672 extern void ApplyTaxnameOptionsToBioSource (BioSourcePtr biop, TaxnameOptionsPtr top);
1673 extern DialoG TaxnameOptionsDialog (GrouP h, Nlm_ChangeNotifyProc change_notify, Pointer change_userdata);
1674 
1675 extern void CleanTableLine (CharPtr line);
1676 
1677 extern Boolean EntityIDAlreadyInList (Uint2 entityID, ValNodePtr entityIDList);
1678 
1679 extern void ResolveFeatureOverlaps (IteM i);
1680 extern void ConvertGeneralIdToLocalID (IteM i);
1681 
1682 extern void UpdateFeatures (IteM i);
1683 
1684 NLM_EXTERN void RemoveDupGenBankSets (SeqEntryPtr sep);
1685 NLM_EXTERN BioseqSetPtr InsetNewSet (BioseqSetPtr bssp, Uint1 _class);
1686 
1687 extern void AbbreviateCitSubAffilStates (IteM i);
1688 extern void NewLoadFeatureQualifierTable (IteM i);
1689 extern void NewLoadFeatureQualifierTableFromClipboard (IteM i);
1690 extern void NewLoadSourceQualifierTable (IteM i);
1691 NLM_EXTERN void NewLoadFeatureQualifierTableToolBtn (ButtoN b);
1692 NLM_EXTERN void NewLoadFeatureQualifierTableClipToolBtn (ButtoN b);
1693 NLM_EXTERN void CreateTableReaderWindowWithStructuredComments (IteM i);
1694 extern void ListAllSequences (BioseqPtr bsp, Pointer userdata);
1695 extern void ChooseCategories (ValNodePtr value_list, Boolean do_choose);
1696 
1697 typedef void (*BulkSetFieldFunc) PROTO ((Pointer, Pointer));
1698 typedef Pointer (*BulkSetFieldStringFunc) PROTO ((Pointer, ApplyValuePtr));
1699 typedef Pointer (*BulkGetFieldFunc) PROTO ((Uint1, Pointer, Pointer));
1700 typedef CharPtr (*BulkDisplayFieldFunc) PROTO ((Pointer));
1701 typedef void (*BulkFreeFieldFunc) PROTO ((Pointer));
1702 typedef DialoG (*BulkCreateDlgFunc) PROTO ((GrouP, CharPtr, SeqEntryPtr));
1703 typedef Int4 (*BulkFormatColumnFunc) PROTO ((ColPtr, CharPtr));
1704 typedef void (*BulkDrawColumnFunc) PROTO ((Pointer, RectPtr));
1705 typedef Pointer (*BulkReleaseCellFunc) PROTO ((Pointer));
1706 typedef Pointer (*BulkCopyFieldFunc) PROTO ((Pointer));
1707 
1708 typedef struct bulkedfield {
1709   CharPtr name;
1710   BulkSetFieldFunc set_func;
1711   BulkSetFieldStringFunc set_str_func;
1712   BulkGetFieldFunc get_func;
1713   BulkDisplayFieldFunc display_func;
1714   BulkFreeFieldFunc free_func;
1715   BulkCreateDlgFunc create_dlg_func;
1716   BulkFormatColumnFunc format_col_func;
1717   BulkDrawColumnFunc  draw_col_func;
1718   BulkReleaseCellFunc release_cell_func;
1719   BulkCopyFieldFunc   copy_func;
1720 } BulkEdFieldData, PNTR BulkEdFieldPtr;
1721 
1722 NLM_EXTERN Pointer BulkSetSimpleTextString (Pointer curr_val, ApplyValuePtr avp);
1723 NLM_EXTERN CharPtr BulkDisplaySimpleText (Pointer data);
1724 NLM_EXTERN void BulkFreeSimpleText (Pointer data);
1725 NLM_EXTERN Int4 BulkFormatSimpleText (ColPtr col, CharPtr name);
1726 NLM_EXTERN Pointer BulkSimpleTextCopy (Pointer data);
1727 NLM_EXTERN DialoG BulkSimpleTextDialog (GrouP g, CharPtr name, SeqEntryPtr sep);
1728 
1729 NLM_EXTERN void BulkEditorObjectList (Uint2 entityID, CharPtr title, ValNodePtr feat_list, BulkEdFieldPtr field_list);
1730 NLM_EXTERN DialoG
1731 CreateBulkEditorDialog
1732 (GrouP               h,
1733  BulkEdFieldPtr      field_list,
1734  ValNodePtr          feat_list,
1735  SeqEntryPtr         sep,
1736  Boolean             collapse_by_default,
1737  ClickableCallback   single_click_func,
1738  ClickableCallback   double_click_func);
1739 NLM_EXTERN DialoG
1740 CreateBulkEditorDialogEx
1741 (GrouP               h,
1742  BulkEdFieldPtr      field_list,
1743  ValNodePtr          feat_list,
1744  SeqEntryPtr         sep,
1745  Boolean             collapse_by_default,
1746  ClickableCallback   single_click_func,
1747  ClickableCallback   double_click_func,
1748  Pointer             metadata,
1749  Boolean             show_only_present);
1750 
1751 NLM_EXTERN void ApplyBulkEditorToObjectList (DialoG d, Boolean do_log);
1752 
1753 NLM_EXTERN void SetBulkEditorSortColumn (DialoG d, Int4 col);
1754 
1755 NLM_EXTERN void FlipSequenceIntervals (IteM i);
1756 
1757 extern void ConvertBioSourceDbxrefToFeatureDbxref (IteM i);
1758 
1759 NLM_EXTERN void AddFluComments (IteM i);
1760 NLM_EXTERN void CreateStructuredCommentsItem (IteM i);
1761 NLM_EXTERN void SubmitterCreateStructuredComments (IteM i);
1762 
1763 NLM_EXTERN SeqAlignPtr GetSeqAlignTSA (BioseqPtr bsp1, BioseqPtr bsp2);
1764 
1765 NLM_EXTERN void MergeBiosources (IteM i);
1766 NLM_EXTERN Boolean FixIDsAndTitles (SeqEntryPtr new_list, SeqEntryPtr current_list, Boolean is_nuc);
1767 
1768 NLM_EXTERN void ExportQualifiers (IteM i);
1769 
1770 extern Boolean IsUnwantedFeatureType (Uint1 key);
1771 extern void ExportBankitComments (IteM i);
1772 
1773 extern void AdvancedAssemblyAlignmentEditor (IteM i);
1774 extern void AssemblyAlignmentIntervalResolution (IteM i);
1775 
1776 extern void ExternalSourceQualifierTableReader (IteM i);
1777 
1778 extern void TrimPrimerSeqJunk (IteM i);
1779 
1780 extern void SequinSeqViewFormMessage (ForM f, Int2 mssg);
1781 extern Boolean WriteTheEntityID (Uint2 entityID, CharPtr path, Boolean binary);
1782 
1783 extern BioseqSetPtr FindTopLevelSetForDesktopFunction (BioseqSetPtr bssp);
1784 extern void ReorderSetByAccessionMenuItem (IteM i);
1785 extern void DescriptorPropagateMenuItem (IteM i);
1786 NLM_EXTERN void RepackagePartsMenuItem (IteM i);
1787 extern void NewSegregateBioseqSetMenuItem (IteM i);
1788 NLM_EXTERN void SegregateBioseqSetEntityID (Uint2 entityID);
1789 extern void SequesterSequencesMenuItem (IteM i);
1790 extern void SequesterSequencesEntityID (Uint2 entityID);
1791 extern void GetRidOfSegGapMenuItem (IteM i);
1792 extern void GenerateSeqAlignMenuItem (IteM i);
1793 extern void UpdateSeqAlignMenuItem (IteM i);
1794 extern void CorrectRNAStrandednessMenuItem (IteM i);
1795 extern void BioseqRevCompByIDMenuItem (IteM i);
1796 extern void RemoveSetsInSetMenuItem (IteM i);
1797 NLM_EXTERN void TestUpdateSequenceBaseForm (BaseFormPtr bfp, Boolean is_indexer, Boolean do_update, Boolean from_clipboard);
1798 NLM_EXTERN void TestUpdateSequenceSetBaseForm (BaseFormPtr bfp, Boolean is_indexer, Boolean do_update, Boolean from_clipboard);
1799 
1800 extern void LoadTaxTableReader (IteM i);
1801 extern void RemoveContigFromScaffoldMenuItem (IteM i);
1802 
1803 NLM_EXTERN void LIBCALLBACK SequesterSequenceList (Uint2 entityID, ValNodePtr bsp_list);
1804 NLM_EXTERN Boolean OkToSequester (void);
1805 NLM_EXTERN void LIBCALLBACK SegregateSequenceList (Uint2 entityID, ValNodePtr bsp_list);
1806 NLM_EXTERN Uint2 SequesterClickableItem (Uint2 entityID, ClickableItemPtr cip);
1807 NLM_EXTERN void SetDoReportAfterUnsequester (Int4 report_type);
1808 
1809 extern void ConvertRptUnitRangeToLocation (IteM i);
1810 
1811 NLM_EXTERN void CleanupCDD (IteM i);
1812 
1813 NLM_EXTERN void FindBestNTrimSites (IteM i);
1814 extern void ScrollToTrimSequenceItem (ValNodePtr vnp, Pointer userdata);
1815 extern DialoG TrimSequenceResultsDisplay (GrouP h);
1816 extern DialoG TrimSequenceEndDisplay (GrouP h);
1817 extern Pointer GetCurrentPercentN (Uint1 data_choice, Pointer data, Pointer metadata);
1818 extern Pointer GetTrimInterval (Uint1 data_choice, Pointer data, Pointer metadata);
1819 extern Pointer GetTrimRemaining (Uint1 data_choice, Pointer data, Pointer metadata);
1820 extern Pointer GetTrimRemove (Uint1 data_choice, Pointer data, Pointer metadata);
1821 extern Boolean TrimShouldDelete (Uint1 data_choice, Pointer data, Pointer metadata);
1822 extern Pointer GetTrimAccession (Uint1 data_choice, Pointer data, Pointer metadata);
1823 extern Pointer GetTrim5 (Uint1 data_choice, Pointer data, Pointer metadata);
1824 extern Pointer GetTrim3 (Uint1 data_choice, Pointer data, Pointer metadata);
1825 extern void DefaultCheckTrimSequenceResultsDisplay (DialoG d);
1826 
1827 extern void MakeSpecialProjectsMenu (MenU m, BaseFormPtr bfp);
1828 
1829 NLM_EXTERN void TrimSequencesByAlignment (IteM i);
1830 extern void RemoveGenomeProjectIdsBaseForm (BaseFormPtr bfp);
1831 
1832 NLM_EXTERN void MakeCommonFeatureMicrosatellite (IteM i);
1833 NLM_EXTERN void MakeCommonFeatureControlRegion (IteM i);
1834 
1835 NLM_EXTERN void RemoveNonNIslands (IteM i);
1836 NLM_EXTERN void RemoveUTRsFromCDSs (IteM i);
1837 NLM_EXTERN void AddFeatureBetween (IteM i);
1838 NLM_EXTERN void ChangeQualifierCase (IteM i);
1839 NLM_EXTERN void ExternalApplyMoleculeType (IteM i);
1840 NLM_EXTERN void ApplyGenomeAssemblyComment (IteM i);
1841 NLM_EXTERN void ApplyAssemblyComment (IteM i);
1842 NLM_EXTERN void SetReleaseDate(IteM i);
1843 NLM_EXTERN void NewRemoveTextOutsideString (IteM i);
1844 
1845 NLM_EXTERN Boolean ValidateTPAHistAlign (BioseqPtr bsp, ValNodePtr PNTR errors);
1846 NLM_EXTERN void RemoveOldTPAAccessions (UserObjectPtr uop);
1847 NLM_EXTERN UserObjectPtr GetTPAAssembly (BioseqPtr bsp);
1848 NLM_EXTERN void DisAllowFarFetchForTPAValidation (IteM i);
1849 
1850 NLM_EXTERN void TruncateByProtAlign (IteM i);
1851 NLM_EXTERN void FrameShiftFinder (IteM i);
1852 NLM_EXTERN void FrameShiftFinderClipboard (IteM i);
1853 NLM_EXTERN void FrameShiftFinderEntityID (Uint2 entityID, Boolean from_clipboard);
1854 
1855 NLM_EXTERN void ApplySetTypeToSeqEntry (SeqEntryPtr sep, Uint1 new_class, Boolean is_top);
1856 NLM_EXTERN void ApplySetTypeToInnerSets (BioseqSetPtr bssp, Uint2 entityID);
1857 
1858 NLM_EXTERN void AdjustForConsensusSplice (IteM i);
1859 NLM_EXTERN void AdjustForConsensusSpliceRelaxed (IteM i);
1860 
1861 NLM_EXTERN void ExplodeRNA (IteM i);
1862 NLM_EXTERN void RemoveFeaturesLikeGaps (IteM i);
1863 
1864 NLM_EXTERN void WithdrawSequences (IteM i);
1865 
1866 NLM_EXTERN SeqEntryPtr GetSequencesFromFile (CharPtr path, SeqEntryPtr current_list);
1867 NLM_EXTERN SeqEntryPtr GetSequencesFromFileEx (CharPtr path, SeqEntryPtr current_list,
1868                                                Nlm_ImportSeqCallbackProc callback,
1869                                                Pointer         callback_data);
1870 NLM_EXTERN CharPtr FindValueFromPairInDefline (CharPtr mod_name, CharPtr def_line);
1871 NLM_EXTERN BioseqPtr FindNthSequenceInSet (SeqEntryPtr seq_list, Int4 nth, BoolPtr is_seg, Boolean nuc_only);
1872 
1873 /* This structure holds a list of IDs and titles for a set of sequences.
1874  * It can be used to represent the new list of sequences being imported,
1875  * the existing list of sequences being imported, suggested changes for
1876  * a list of sequences, etc.
1877  */
1878 typedef struct idandtitleedit
1879 {
1880   CharPtr PNTR id_list;
1881   CharPtr PNTR title_list;
1882   Int4Ptr      length_list;
1883   BoolPtr      is_seg;
1884   Int4         num_sequences;
1885   Boolean      nuc_only;
1886 } IDAndTitleEditData, PNTR IDAndTitleEditPtr;
1887 
1888 NLM_EXTERN IDAndTitleEditPtr IDAndTitleEditFree (IDAndTitleEditPtr iatep);
1889 NLM_EXTERN IDAndTitleEditPtr SeqEntryListToIDAndTitleEditEx (SeqEntryPtr list, Boolean nuc_only);
1890 NLM_EXTERN Boolean ApplyIDAndTitleEditToSeqEntryList (SeqEntryPtr list, IDAndTitleEditPtr iatep);
1891 NLM_EXTERN void RemoveSourceModifiersFromIdAndTitleEdit (IDAndTitleEditPtr iatep);
1892 NLM_EXTERN CharPtr GetValueFromTitle (CharPtr mod_name, CharPtr title);
1893 NLM_EXTERN void RemoveValueFromDefline (CharPtr mod_name, CharPtr def_line);
1894 NLM_EXTERN CharPtr ReplaceValueInOneDefLine (CharPtr orig_defline, CharPtr value_name, CharPtr new_value);
1895 NLM_EXTERN Boolean ImportModifiersToIDAndTitleEdit (IDAndTitleEditPtr iatep);
1896 NLM_EXTERN Boolean ImportModifiersToIDAndTitleEditEx (IDAndTitleEditPtr iatep, ValNodePtr preferred_list);
1897 NLM_EXTERN void SetSequencesForSubmissionForm (WindoW w, SeqEntryPtr sep_list, Int4 page);
1898 
1899 NLM_EXTERN void SplitPCRPrimersByPositionMenuItem (IteM i);
1900 NLM_EXTERN void SplitPCRPrimersByConstraintsMenuItem (IteM i);
1901 NLM_EXTERN void MergePCRPrimerSetsMenuItem (IteM i);
1902 
1903 NLM_EXTERN Boolean SourceAssistantForDeflines (SeqEntryPtr seq_list, Int4 doc_width, Int2 seqPackage);
1904 NLM_EXTERN void AddOneSourceQualDesc (ValNodePtr PNTR list, CharPtr name, Boolean is_orgmod, Uint1 subtype, Uint1 subfield);
1905 
1906 extern void FixiPCRPrimerSeqsMenuItem (IteM i);
1907 NLM_EXTERN CharPtr GetPresentModifierNames (CharPtr str);
1908 NLM_EXTERN void ApplyNamedRNABaseForm (BaseFormPtr bfp, CharPtr rnaName);
1909 
1910 typedef enum feature_editor_actions
1911 {
1912   FEAT_ED_EVIDENCE = 1,
1913   FEAT_ED_EXCEPTION,
1914   FEAT_ED_PARTIAL,
1915   FEAT_ED_STRAND,
1916   FEAT_ED_CITATION,
1917   FEAT_ED_EXPERIMENT,
1918   FEAT_ED_INFERENCE,
1919   FEAT_ED_PSEUDO
1920 } EFeatureEditorActions;
1921 
1922 NLM_EXTERN void FeatureEditorBaseForm (BaseFormPtr bfp, Int4 first_action);
1923 NLM_EXTERN void ChangeQualifierCaseBaseForm (BaseFormPtr bfp);
1924 NLM_EXTERN void RemoveUnpublishedPublicationsBaseForm (BaseFormPtr bfp);
1925 NLM_EXTERN void LoadOrganismModifierTableBaseForm (BaseFormPtr bfp, Boolean IsTaxConsult);
1926 NLM_EXTERN void RemoveAllSourceNoteBaseForm (BaseFormPtr bfp);
1927 NLM_EXTERN void ApplyIsolationSourceBaseForm (BaseFormPtr bfp);
1928 NLM_EXTERN Int2 CorrectRNAStrandednessForEntityID (Uint2 entityID, Boolean use_smart);
1929 
1930 NLM_EXTERN void RetranslateCdRegionsChooseFrameWithNoStop (IteM i);
1931 NLM_EXTERN DialoG SegregateIdDialog (GrouP g);
1932 NLM_EXTERN void ChooseCategoriesForSegregateIdDialog(DialoG d, ValNodePtr list);
1933 NLM_EXTERN DialoG SegregateConstraintDialog (GrouP g);
1934 NLM_EXTERN void ChooseCategoriesForSegregateConstraintDialog(DialoG d, ValNodePtr list);
1935 NLM_EXTERN void UnchooseCategoriesForSegregateConstraintDialog(DialoG d, ValNodePtr list);
1936 
1937 NLM_EXTERN void BulkCDSSetProtein (Pointer target, Pointer data);
1938 
1939 NLM_EXTERN ValNodePtr GetUniqueValuesForStructuredCommentField (SeqEntryPtr sep, CharPtr field_name);
1940 NLM_EXTERN ValNodePtr GetStructuredCommentFieldNames (SeqEntryPtr sep);
1941 
1942 NLM_EXTERN void ConvertToDelayedGenProdSetQualifiers (IteM i);
1943 NLM_EXTERN void ClearSelectedItem (BaseFormPtr bfp);
1944 
1945 NLM_EXTERN void RemoveIllegalQuals (IteM i);
1946 NLM_EXTERN void RemoveWrongQuals (IteM i);
1947 NLM_EXTERN void MoveIllegalQuals (IteM i);
1948 NLM_EXTERN void MoveWrongQuals (IteM i);
1949 NLM_EXTERN void RemoveBadQualsCommon (Uint2 entityID, Boolean wrong, Boolean illegal, Boolean move_to_note);
1950 NLM_EXTERN void CreateProteinIDs (IteM i);
1951 NLM_EXTERN void AddLocusTagGenes (IteM i);
1952 
1953 typedef void (*MenuOrButtonFunc) PROTO ((BaseFormPtr));
1954 NLM_EXTERN void ButtonOrMenuItemTemplate (IteM i, MenuOrButtonFunc func);
1955 NLM_EXTERN void ButtonOrMenuButtonTemplate (ButtoN b, MenuOrButtonFunc func);
1956 
1957 extern void RemoveSequencesFromRecordBtn (ButtoN b);
1958 extern void RemovePubConsortiumsBtn (ButtoN b);
1959 extern void ApplyCDSBtn (ButtoN b);
1960 extern void LoadTaxConsultBtn (ButtoN b);
1961 extern void LoadTaxTableReaderBtn (ButtoN b);
1962 
1963 NLM_EXTERN void
1964 AddEditApplyDataToApplyValue
1965 (Int4 action_choice,
1966  EditApplyPtr edit_apply,
1967  ApplyValuePtr avp);
1968 
1969 extern void TaxFixToolBaseForm (BaseFormPtr bfp);
1970 NLM_EXTERN void CreateStructuredCommentsBaseForm (BaseFormPtr bfp);
1971 extern void NewDescriptorMenuFuncEx (ObjMgrProcPtr ompp, BaseFormPtr bfp, Uint2 descsubtype, CharPtr user_object_tag);
1972 NLM_EXTERN void BulkEditSourceBaseForm (BaseFormPtr bfp);
1973 
1974 /* for submission wizards */
1975 typedef enum {
1976   eWizardType_NormalDialogs = 0 ,
1977   eWizardType_UnculturedSamples = 1 ,
1978   eWizardType_Viruses,
1979   eWizardType_CulturedSamples,
1980   eWizardType_IGS,
1981   eWizardType_Microsatellite,
1982   eWizardType_DLoop,
1983   eWizardType_WGS
1984 } EWizardType;
1985 
1986 #define eNumWizardTypes 8
1987 
1988 
1989 NLM_EXTERN Int4 CountSequencesAndSegments (SeqEntryPtr list, Boolean nuc_only);
1990 NLM_EXTERN Boolean WantSequencingMethod (Int4 num_sequences);
1991 NLM_EXTERN ClickableItemPtr ClickableItemForBioseq (BioseqPtr bsp);
1992 
1993 typedef struct sequencingmethodinfo {
1994   /* list of structured comment objects to add */
1995   ValNodePtr structured_comments;
1996   Int4 assembled_choice;
1997   Boolean quit_now;
1998 } SequencingMethodInfoData, PNTR SequencingMethodInfoPtr;
1999 
2000 NLM_EXTERN SequencingMethodInfoPtr SequencingMethodInfoNew (void);
2001 NLM_EXTERN SequencingMethodInfoPtr SequencingMethodInfoFree (SequencingMethodInfoPtr info);
2002 NLM_EXTERN Boolean IsSequencingMethodInfoValid (SequencingMethodInfoPtr info, Int4 num_sequences, Boolean required, Int4 wizard_type);
2003 NLM_EXTERN DialoG SequencingMethodDialog (GrouP parent, EWizardType wizard_type);
2004 NLM_EXTERN void QuitFromWizard (ForM form);
2005 NLM_EXTERN Boolean RemoveSequencesFromWizardList (ValNodePtr PNTR sequences, Int4 suggested_min);
2006 NLM_EXTERN void ChooseCategoriesByIdList (ValNodePtr seq_list, CharPtr id_list);
2007 NLM_EXTERN Boolean SuggestJumpingToWizard (SeqEntryPtr sep);
2008 
2009 NLM_EXTERN void SubmitterRemoveSequencesFromRecordBaseForm (BaseFormPtr bfp);
2010 NLM_EXTERN void SetTsaCallback (BioseqPtr bsp, Pointer data);
2011 NLM_EXTERN void ExtendCodingRegionEnds (IteM i);
2012 NLM_EXTERN void VecScreenAll (Uint2 entityID);
2013 NLM_EXTERN void ExternalVecScreenTool (IteM i);
2014 NLM_EXTERN void RemoveGeneralIds (IteM i);
2015 
2016 NLM_EXTERN void WizardVectorTool (SeqEntryPtr PNTR psep);
2017 NLM_EXTERN Boolean VecScreenWizard (SeqEntryPtr sep);
2018 NLM_EXTERN Boolean IsVecScreenAnnot (SeqAnnotPtr sap);
2019 NLM_EXTERN void WizardRemoveVecScreenAnnots (SeqEntryPtr sep);
2020 NLM_EXTERN void TrimAmbiguousBases (SeqEntryPtr PNTR sequences);
2021 NLM_EXTERN Boolean
2022 ValidateModifierTableSequenceIDs
2023 (ValNodePtr        header_line,
2024  IDAndTitleEditPtr iatep,
2025  Int4Ptr           sequence_numbers,
2026  Int4Ptr           num_rows);
2027 NLM_EXTERN Boolean IsSequenceIdColumnHeader (CharPtr str);
2028 NLM_EXTERN ValNodePtr ReadRowListFromFile (void);
2029 NLM_EXTERN void ScreenBarcodePlant (IteM i);
2030 
2031 typedef struct fixproductcap {
2032   Boolean keep_cap_before_punct;
2033   Boolean keep_cap_before_cap;
2034   Boolean keep_cap_before_digit;
2035   CharPtr remove_list;
2036 } FixProductCapData, PNTR FixProductCapPtr;
2037 
2038 NLM_EXTERN void FixProductCapitalizationInString (CharPtr PNTR pStr, FixProductCapPtr fc);
2039 
2040 NLM_EXTERN Boolean UseLessClickingOption (void);
2041 NLM_EXTERN void TSATrimBioseq (BioseqPtr bsp, FloatLo n_pct, Int4 n_length, Int4 min_length, Int4Ptr trim5, Int4Ptr trim3);
2042 NLM_EXTERN void ApplyFormattedStructuredCommentBaseForm (BaseFormPtr bfp, CharPtr prefix);
2043 NLM_EXTERN void RetranslateCdRegionsChooseFrameWithNoStopForEntityID (Uint2 entityID);
2044 NLM_EXTERN Boolean BadSeqIdLengths (SeqEntryPtr sep);
2045 NLM_EXTERN void EditSeqIds (IteM i);
2046 NLM_EXTERN void ExportFASTASeqEntryList (SeqEntryPtr sep, FILE *fp);
2047 NLM_EXTERN void ExportQualifiersBaseForm (BaseFormPtr bfp);
2048 NLM_EXTERN void CreateSeqHistTPA (IteM i);
2049 NLM_EXTERN void CreateSeqHistTPADetailed (IteM i);
2050 
2051 NLM_EXTERN void RefreshAllReportWindows (Pointer data);
2052 NLM_EXTERN BioseqPtr GetFirstBioseqInSeqEntry (SeqEntryPtr sep);
2053 NLM_EXTERN void BatchApplyGeneticCode (IteM i);
2054 NLM_EXTERN void RemoveSeqAnnotDataIds (IteM i);
2055 extern void GroupExplodeMenuItem (IteM i);
2056 NLM_EXTERN void SetGlobalRefGeneStatus (IteM i);
2057 NLM_EXTERN void ExtendPartialFeaturesToEndsForEntityID (Uint2 entityID);
2058 
2059 #define FEATURE_REMOVE   1
2060 #define FEATURE_CONVERT  2
2061 #define FEATURE_SELECT   3
2062 #define FEATURE_DESELECT 4
2063 
2064 NLM_EXTERN void FeatureRemoveOrConvertBaseForm (BaseFormPtr bfp, Int4 first_action);
2065 NLM_EXTERN Boolean LookupJournalEUtilsFunc (CharPtr title, size_t maxsize, Int1Ptr jtaType, ValNodePtr PNTR all_titlesP);
2066 NLM_EXTERN Boolean LIBCALLBACK RemoveGeneXrefsOnBioseqs (BioseqPtr bsp, SeqMgrBioseqContextPtr bcontext);
2067 
2068 NLM_EXTERN void LogItemUse(CharPtr string);
2069 
2070 NLM_EXTERN void ApplyKeywordWithStringConstraint (IteM i);
2071 NLM_EXTERN void GLobalArticleLookupMenuItem (IteM i);
2072 
2073 #define TESTRESULT_WARN 0
2074 #define TESTRESULT_MISSING 1
2075 #define TESTRESULT_INVALID 2
2076 
2077 #ifdef __cplusplus
2078 }
2079 #endif
2080 
2081 #endif /* ndef _SEQUIN_ */
2082 
2083