1 /* macro_i.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: macro_i.h 27 * 28 * Author: Colleen Bollin 29 * 30 * Version Creation Date: 11/15/2007 31 * 32 * $Revision: 1.170 $ 33 * 34 * File Description: 35 * 36 * Modifications: 37 * -------------------------------------------------------------------------- 38 * Date Name Description of modification 39 * ------- ---------- ----------------------------------------------------- 40 * 41 * 42 * ========================================================================== 43 */ 44 45 #ifndef _macroapi_h_ 46 #define _macroapi_h_ 47 48 #ifdef __cplusplus 49 extern "C" { 50 #endif 51 52 /* 53 * Some batch operations will be faster if information about the entire record is collected once 54 * and reused. The BatchExtra structure is where such data belongs. 55 */ 56 typedef struct batchextra { 57 ValNodePtr cit_list; /* this contains a list of minimized pubs and the numbers to be used for citations referring 58 * to these pubs on a given Bioseq. 59 * If needed, it should be generated by GetCitListsForSeqEntry. 60 */ 61 } BatchExtraData, PNTR BatchExtraPtr; 62 63 NLM_EXTERN BatchExtraPtr BatchExtraNew (); 64 NLM_EXTERN BatchExtraPtr BatchExtraFree (BatchExtraPtr b); 65 66 NLM_EXTERN ValNodePtr GetCitListsForSeqEntry (SeqEntryPtr sep); 67 NLM_EXTERN ValNodePtr PubSerialNumberListFree (ValNodePtr vnp); 68 /* GetCitationNumberForMinPub can be used to calculate the citation number to be used 69 * for a minimized pub from a SeqFeat->cit on a given Bioseq. pub_list should have 70 * been generated by GetCitListsForSeqEntry and should be freed by PubSerialNumberListFree. 71 */ 72 NLM_EXTERN Int4 GetCitationNumberForMinPub (BioseqPtr bsp, ValNodePtr min_pub, ValNodePtr pub_list); 73 NLM_EXTERN ValNodePtr GetMinPubForCitationNumber (BioseqPtr bsp, Int4 number, ValNodePtr pub_list); 74 75 NLM_EXTERN FeatureFieldPtr FeatureFieldCopy (FeatureFieldPtr orig); 76 NLM_EXTERN FieldTypePtr FieldTypeCopy (FieldTypePtr orig); 77 78 NLM_EXTERN FieldTypePtr FieldTypeFromString (CharPtr str); 79 NLM_EXTERN Int4 GetFeatdefFromFeatureType (Int4 feature_type); 80 NLM_EXTERN Int4 GetFeatureTypeFromFeatdef (Int4 featdef); 81 NLM_EXTERN CharPtr GetFeatureNameFromFeatureType (Int4 feature_type); 82 NLM_EXTERN Int4 GetFeatureTypeByName (CharPtr feat_name); 83 NLM_EXTERN void AddImportFeaturesToChoiceList (ValNodePtr PNTR feature_type_list); 84 NLM_EXTERN void AddAllFeaturesToChoiceList (ValNodePtr PNTR feature_type_list); 85 NLM_EXTERN CharPtr GetFeatQualName (Int4 featqual); 86 NLM_EXTERN Int4 GetFeatQualByName (CharPtr qualname); 87 NLM_EXTERN Int4 GetNumFeatQual (void); 88 NLM_EXTERN void AddAllFeatureFieldsToChoiceList (ValNodePtr PNTR field_list); 89 NLM_EXTERN CharPtr SummarizeFeatQual (ValNodePtr qual); 90 NLM_EXTERN CharPtr GetSourceQualName (Int4 srcqual); 91 NLM_EXTERN Int4 GetSourceQualTypeByName (CharPtr qualname); 92 NLM_EXTERN Int4 GetSrcQualFromSubSrcOrOrgMod (Int4 qual, Boolean is_org_mod); 93 NLM_EXTERN Int4 GetSubSrcQualFromSrcQual (Int4 srcqual, Int4Ptr subfield); 94 NLM_EXTERN Int4 GetOrgModQualFromSrcQual (Int4 srcqual, Int4Ptr subfield); 95 NLM_EXTERN ValNodePtr GetSourceQualList (Boolean for_remove); 96 NLM_EXTERN Boolean IsNonTextSourceQual (Int4 srcqual); 97 NLM_EXTERN Boolean IsNonTextFieldType (FieldTypePtr field); 98 NLM_EXTERN TextFsaPtr GetOrgModSearch (void); 99 NLM_EXTERN Int4 GenomeFromSrcLoc (Int4 srcloc); 100 NLM_EXTERN Int4 SrcLocFromGenome (Int4 genome); 101 NLM_EXTERN CharPtr LocNameFromGenome (Int4 genome); 102 NLM_EXTERN Int4 GenomeFromLocName (CharPtr loc_name); 103 NLM_EXTERN ValNodePtr GetLocationList (Boolean for_remove); 104 NLM_EXTERN Int4 OriginFromSrcOrig (Int4 srcorig); 105 NLM_EXTERN Int4 SrcOrigFromOrigin (Int4 origin); 106 NLM_EXTERN CharPtr OriginNameFromOrigin (Int4 origin); 107 NLM_EXTERN ValNodePtr GetOriginList (Boolean for_remove); 108 NLM_EXTERN BioSourcePtr GetBioSourceFromObject (Uint1 choice, Pointer data); 109 NLM_EXTERN ValNodePtr GetSourceQualSampleFieldList (SeqEntryPtr sep); 110 NLM_EXTERN ValNodePtr GetSourceQualSampleFieldListForSeqEntryList (ValNodePtr list); 111 NLM_EXTERN CharPtr CDSGeneProtNameFromField (Int4 field); 112 NLM_EXTERN CharPtr CDSGeneProtFeatureNameFromFeatureType (Int4 feature_type); 113 NLM_EXTERN void AddAllCDSGeneProtFieldsToChoiceList (ValNodePtr PNTR field_list); 114 NLM_EXTERN void AddAllCDSGeneProtFeaturesToChoiceList (ValNodePtr PNTR field_list); 115 NLM_EXTERN FeatureFieldPtr FeatureFieldFromCDSGeneProtField (Uint2 cds_gene_prot_field); 116 117 NLM_EXTERN CharPtr BiomolNameFromBiomol (Int4 biomol); 118 NLM_EXTERN Int4 BiomolFromMoleculeType (Int4 molecule_type); 119 NLM_EXTERN ValNodePtr GetMoleculeTypeList (void); 120 NLM_EXTERN CharPtr TechNameFromTech (Int4 tech); 121 NLM_EXTERN Int4 TechFromTechName (CharPtr tech_name); 122 NLM_EXTERN Int4 TechFromTechniqueType (Int4 technique_type); 123 NLM_EXTERN ValNodePtr GetTechniqueTypeList (void); 124 NLM_EXTERN Int4 CompletenessFromCompletednessType (Int4 completedness_type); 125 NLM_EXTERN CharPtr CompletenessNameFromCompleteness (Int4 completeness); 126 NLM_EXTERN ValNodePtr GetCompletednessTypeList (void); 127 NLM_EXTERN Int4 MolFromMoleculeClassType (Int4 moleculeclass_type); 128 NLM_EXTERN CharPtr MolNameFromMol (Int4 mol); 129 NLM_EXTERN ValNodePtr GetMoleculeClassTypeList (void); 130 NLM_EXTERN Int4 TopologyFromTopologyType (Int4 topology_type); 131 NLM_EXTERN CharPtr TopologyNameFromTopology (Int4 topology); 132 NLM_EXTERN ValNodePtr GetTopologyTypeList (void); 133 NLM_EXTERN Int4 StrandFromStrandType (Int4 strand_type); 134 NLM_EXTERN CharPtr StrandNameFromStrand (Int4 strand); 135 NLM_EXTERN ValNodePtr GetStrandTypeList (void); 136 NLM_EXTERN Int4 Asn1BondTypeFromMacroBondType (Int4 macro_bond_type); 137 NLM_EXTERN Int4 MacroBondTypeFromAsn1BondType (Int4 asn1_bond_type); 138 NLM_EXTERN CharPtr GetMacroBondTypeName (Int4 macro_bond_type); 139 NLM_EXTERN ValNodePtr GetBondTypeList (void); 140 NLM_EXTERN Int4 Asn1SiteTypeFromMacroSiteType (Int4 macro_site_type); 141 NLM_EXTERN Int4 MacroSiteTypeFromAsn1SiteType (Int4 asn1_site_type); 142 NLM_EXTERN CharPtr GetMacroSiteTypeName (Int4 macro_site_type); 143 NLM_EXTERN ValNodePtr GetSiteTypeList (void); 144 145 146 147 NLM_EXTERN FieldTypePtr GetFromFieldFromFieldPair (FieldPairTypePtr fieldpair); 148 NLM_EXTERN FieldTypePtr GetToFieldFromFieldPair (FieldPairTypePtr fieldpair); 149 NLM_EXTERN FieldPairTypePtr BuildFieldPairFromFromField (FieldTypePtr field_from); 150 NLM_EXTERN Uint1 FieldTypeFromAECRAction (AECRActionPtr action); 151 NLM_EXTERN Uint1 FieldTypeChoiceFromFieldPairTypeChoice (Uint1 field_pair_choice); 152 NLM_EXTERN Int2 FeatureTypeFromFieldType (FieldTypePtr field); 153 NLM_EXTERN Int4 GetFeatureTypeForRnaType (Int4 rnatype); 154 NLM_EXTERN int CompareFieldTypes (FieldTypePtr vnp1, FieldTypePtr vnp2); 155 NLM_EXTERN int CompareFieldTypesEx (FieldTypePtr vnp1, FieldTypePtr vnp2, Boolean use_source_qual_sort); 156 NLM_EXTERN Boolean AreAECRActionFieldsEqual (AECRActionPtr action1, AECRActionPtr action2); 157 NLM_EXTERN ValNodePtr GetFieldTypeListFromAECRAction (AECRActionPtr action); 158 NLM_EXTERN Uint1 GetBiomolForRnaType (Int4 rnatype); 159 NLM_EXTERN CharPtr GetBiomolNameForRnaType (Int4 rnatype); 160 NLM_EXTERN void AddAllRNASubtypesToChoiceList (ValNodePtr PNTR field_list); 161 NLM_EXTERN ValNodePtr MakeFeatureFieldField (Uint2 ftype, Int4 legalqual); 162 163 /* source qual functions */ 164 NLM_EXTERN CharPtr GetSourceQualFromBioSource (BioSourcePtr biop, SourceQualChoicePtr scp, StringConstraintPtr constraint); 165 NLM_EXTERN ValNodePtr GetMultipleSourceQualsFromBioSource (BioSourcePtr biop, SourceQualChoicePtr scp, StringConstraintPtr constraint); 166 NLM_EXTERN CharPtr GetQualFromFeature (SeqFeatPtr sfp, FeatureFieldPtr field, StringConstraintPtr scp); 167 NLM_EXTERN CharPtr GetQualFromFeatureEx (SeqFeatPtr sfp, FeatureFieldPtr field, StringConstraintPtr scp, BatchExtraPtr batch_extra); 168 NLM_EXTERN Boolean SetQualOnFeature (SeqFeatPtr sfp, FeatureFieldPtr field, StringConstraintPtr scp, CharPtr value, Uint2 existing_text); 169 NLM_EXTERN Boolean RemoveQualFromFeature (SeqFeatPtr sfp, FeatureFieldPtr field, StringConstraintPtr scp); 170 NLM_EXTERN Boolean SetSourceQualInBioSource (BioSourcePtr biop, SourceQualChoicePtr scp, StringConstraintPtr constraint, CharPtr value, Uint2 existing_text); 171 NLM_EXTERN Boolean RemoveSourceQualFromBioSource (BioSourcePtr biop, SourceQualChoicePtr scp, StringConstraintPtr constraint); 172 NLM_EXTERN Boolean AllowSourceQualMulti (SourceQualChoicePtr s); 173 NLM_EXTERN Boolean SetStringInGBQualList (GBQualPtr PNTR list, ValNodePtr field, StringConstraintPtr scp, CharPtr new_val, Uint2 existing_text); 174 NLM_EXTERN Boolean RemoveGBQualMatch (GBQualPtr PNTR list, CharPtr qual_name, Int4 subfield, StringConstraintPtr scp); 175 NLM_EXTERN CharPtr GetFirstGBQualMatch (GBQualPtr qual, CharPtr qual_name, Int4 subfield, StringConstraintPtr scp); 176 177 NLM_EXTERN ValNodePtr SourceQualValsFromBioSourcePtr (BioSourcePtr biop); 178 NLM_EXTERN BioSourcePtr BioSourceFromSourceQualVals (ValNodePtr fields); 179 NLM_EXTERN CharPtr GetDBxrefFromBioSource (BioSourcePtr biop, CharPtr db_name); 180 NLM_EXTERN Boolean SetDBxrefForBioSource (BioSourcePtr biop, CharPtr db_name, CharPtr str, Uint2 existing_text); 181 NLM_EXTERN Boolean RemoveDBxrefForBioSource (BioSourcePtr biop, CharPtr db_name, StringConstraintPtr scp); 182 183 /* RNA-field functions */ 184 NLM_EXTERN ValNodePtr GetRNATypeList (void); 185 NLM_EXTERN ValNodePtr GetRnaFieldList (void); 186 NLM_EXTERN CharPtr GetNameForRnaField (Int4 rnafield); 187 NLM_EXTERN CharPtr SummarizeRnaType (RnaFeatTypePtr rt); 188 NLM_EXTERN FeatureFieldPtr FeatureFieldFromRnaQual (RnaQualPtr rq); 189 NLM_EXTERN RnaQualPtr RnaQualFromFeatureField (FeatureFieldPtr ffp); 190 NLM_EXTERN Boolean SetRNARefProductString (RnaRefPtr rrp, StringConstraintPtr scp, CharPtr new_val, Uint2 existing_text); 191 NLM_EXTERN CharPtr GetRNARefProductString (RnaRefPtr rrp, StringConstraintPtr scp); 192 NLM_EXTERN CharPtr GetRNAProductString (SeqFeatPtr sfp, StringConstraintPtr scp); 193 NLM_EXTERN Boolean SetRNAProductString (SeqFeatPtr sfp, StringConstraintPtr scp, CharPtr new_val, Uint2 existing_text); 194 NLM_EXTERN Boolean RemoveRNAProductString (SeqFeatPtr sfp, StringConstraintPtr scp); 195 NLM_EXTERN Boolean SettmRNATagPeptide (RnaRefPtr rrp, StringConstraintPtr scp, CharPtr new_val, Uint2 existing_text); 196 NLM_EXTERN CharPtr GettmRNATagPeptide (RnaRefPtr rrp, StringConstraintPtr scp); 197 NLM_EXTERN Boolean SetncRNAClass (RnaRefPtr rrp, StringConstraintPtr scp, CharPtr new_val, Uint2 existing_text); 198 NLM_EXTERN CharPtr GetncRNAClass (RnaRefPtr rrp, StringConstraintPtr scp); 199 NLM_EXTERN Boolean SettRNACodons_Recognized (SeqFeatPtr sfp, StringConstraintPtr scp, CharPtr new_val, Uint2 existing_text); 200 201 /* Structured Comment functions */ 202 NLM_EXTERN CharPtr GetStructuredCommentFieldFromUserObject (UserObjectPtr uop, StructuredCommentFieldPtr field, StringConstraintPtr scp); 203 NLM_EXTERN Boolean IsUserObjectStructuredComment (UserObjectPtr uop); 204 NLM_EXTERN ValNodePtr GetStructuredCommentFieldList (SeqEntryPtr sep); 205 NLM_EXTERN ValNodePtr GetStructuredCommentFieldListFromUserObject (UserObjectPtr uop); 206 207 208 /* Publication functions */ 209 NLM_EXTERN CharPtr GetPubFieldLabel (Int4 pub_field); 210 NLM_EXTERN Int4 GetPubFieldFromLabel(CharPtr label); 211 NLM_EXTERN ValNodePtr GetPubFieldList (void); 212 NLM_EXTERN ValNodePtr GetPubClassList (); 213 NLM_EXTERN CharPtr GetPubclassFromPub (PubPtr the_pub); 214 NLM_EXTERN Boolean SetPubclassOnPub (PubPtr the_pub, CharPtr pub_class); 215 NLM_EXTERN CharPtr GetPubFieldFromPub (PubPtr the_pub, Int4 field, StringConstraintPtr scp); 216 NLM_EXTERN Int4 GetPubMLStatus (PubPtr the_pub); 217 218 /* DBLink functions */ 219 NLM_EXTERN Int4 GetNumDBLinkFields (void); 220 NLM_EXTERN CharPtr GetDBLinkNameFromDBLinkFieldType (Int4 field_type); 221 NLM_EXTERN Int4 GetDBLinkFieldTypeFromDBLinkName (CharPtr field_name); 222 223 NLM_EXTERN CharPtr GetBioProjectIdFromBioseq (BioseqPtr bsp, StringConstraintPtr scp); 224 225 226 /* Dbtag functions */ 227 NLM_EXTERN CharPtr GetDbtagString (DbtagPtr db_tag); 228 NLM_EXTERN Boolean SetDbtagString (DbtagPtr db_tag, CharPtr value, Uint2 existing_text); 229 230 /* other useful functions */ 231 NLM_EXTERN void GetGeneInfoForFeature (SeqFeatPtr sfp, GeneRefPtr PNTR p_grp, SeqFeatPtr PNTR p_gene); 232 233 /* generic string functions */ 234 NLM_EXTERN Boolean SetStringValue (CharPtr PNTR existing_val, CharPtr new_val, Uint2 existing_text); 235 NLM_EXTERN Boolean RemoveValNodeStringMatch (ValNodePtr PNTR list, StringConstraintPtr scp); 236 NLM_EXTERN Boolean SetStringsInValNodeStringList (ValNodePtr PNTR list, StringConstraintPtr scp, CharPtr new_val, Uint2 existing_text); 237 238 239 NLM_EXTERN Boolean IsStringConstraintEmpty (StringConstraintPtr scp); 240 NLM_EXTERN Boolean DoesSingleStringMatchConstraint (CharPtr str, StringConstraintPtr scp); 241 NLM_EXTERN Boolean DoesStringMatchConstraint (CharPtr str, StringConstraintPtr scp); 242 NLM_EXTERN Boolean RemoveStringConstraintPortionFromString (CharPtr PNTR str, StringConstraintPtr scp); 243 NLM_EXTERN Boolean ReplaceStringConstraintPortionInString (CharPtr PNTR str, CharPtr replace, StringConstraintPtr scp); 244 NLM_EXTERN Boolean IsSourceConstraintEmpty (SourceConstraintPtr scp); 245 NLM_EXTERN Boolean DoesBiosourceMatchConstraint (BioSourcePtr biop, SourceConstraintPtr scp); 246 NLM_EXTERN Boolean IsSequenceConstraintEmpty (SequenceConstraintPtr constraint); 247 NLM_EXTERN Boolean DoesSequenceMatchSequenceConstraint (BioseqPtr bsp, SequenceConstraintPtr constraint); 248 NLM_EXTERN Boolean IsPublicationConstraintEmpty (PublicationConstraintPtr constraint); 249 NLM_EXTERN Boolean IsFieldConstraintEmpty (FieldConstraintPtr constraint); 250 NLM_EXTERN Boolean IsCDSGeneProtQualConstraintEmpty (CDSGeneProtQualConstraintPtr constraint); 251 NLM_EXTERN Boolean IsLocationConstraintEmpty (LocationConstraintPtr lcp); 252 NLM_EXTERN Boolean IsMolinfoFieldConstraintEmpty (MolinfoFieldConstraintPtr constraint); 253 NLM_EXTERN Boolean IsTranslationConstraintEmpty (TranslationConstraintPtr constraint); 254 NLM_EXTERN Boolean DoesObjectMatchConstraintChoiceSet (Uint1 choice, Pointer data, ConstraintChoiceSetPtr csp); 255 NLM_EXTERN Boolean DoesSeqIDListMeetStringConstraint (SeqIdPtr sip, StringConstraintPtr string_constraint); 256 NLM_EXTERN ValNodePtr FreeObjectList (ValNodePtr vnp); 257 NLM_EXTERN ValNodePtr GetObjectListForAECRAction (SeqEntryPtr sep, AECRActionPtr action); 258 NLM_EXTERN ValNodePtr GetObjectListForAECRActionEx (SeqEntryPtr sep, AECRActionPtr action, BatchExtraPtr batch_extra); 259 NLM_EXTERN ValNodePtr GetObjectListForFieldType (Uint1 field_type, SeqEntryPtr sep); 260 NLM_EXTERN ValNodePtr GetSequenceListForConstraint (SeqEntryPtr sep, ConstraintChoiceSetPtr csp); 261 NLM_EXTERN Int4 DoApplyActionToObjectList (ApplyActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp); 262 NLM_EXTERN Int4 DoApplyActionToObjectListEx (ApplyActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp, BatchExtraPtr batch_extra); 263 NLM_EXTERN Int4 DoEditActionToObjectList (EditActionPtr action, ValNodePtr object_list, Boolean also_change_mrna); 264 NLM_EXTERN Int4 DoEditActionToObjectListEx (EditActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, BatchExtraPtr batch_extra); 265 NLM_EXTERN Int4 DoConvertActionToObjectList (ConvertActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp); 266 NLM_EXTERN Int4 DoConvertActionToObjectListEx (ConvertActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp, BatchExtraPtr batch_extra); 267 NLM_EXTERN Int4 DoCopyActionToObjectList (CopyActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp); 268 NLM_EXTERN Int4 DoCopyActionToObjectListEx (CopyActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp, BatchExtraPtr batch_extra); 269 NLM_EXTERN Int4 DoSwapActionToObjectList (SwapActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp); 270 NLM_EXTERN Int4 DoRemoveActionToObjectList (RemoveActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp); 271 NLM_EXTERN Int4 DoParseActionToObjectList (AECRParseActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp); 272 NLM_EXTERN Int4 DoParseActionToObjectListEx (AECRParseActionPtr action, ValNodePtr object_list, Boolean also_change_mrna, StringConstraintPtr scp, BatchExtraPtr batch_extra); 273 NLM_EXTERN StringConstraintPtr FindStringConstraintInConstraintSetForField (FieldTypePtr field, ConstraintChoiceSetPtr csp); 274 NLM_EXTERN StringConstraintPtr FindStringConstraintInConstraintSetForFieldPair (FieldPairTypePtr fieldpair, ConstraintChoiceSetPtr csp); 275 NLM_EXTERN StringConstraintPtr StringConstraintFromFieldEdit (FieldEditPtr edit); 276 NLM_EXTERN ValNodePtr GetDuplicateFeaturesForRemoval (SeqEntryPtr sep, RemoveDuplicateFeatureActionPtr action); 277 NLM_EXTERN void RemoveDuplicateFeaturesInList (ValNodePtr delete_list, Uint2 entityID, Boolean remove_proteins); 278 NLM_EXTERN Boolean RemoveDuplicateFeaturesInSeqEntry (SeqEntryPtr sep, RemoveDuplicateFeatureActionPtr action, FILE *log_fp); 279 280 NLM_EXTERN int LIBCALLBACK SortVnpByObject (VoidPtr ptr1, VoidPtr ptr2); 281 282 NLM_EXTERN Boolean IsConversionSupported (Uint2 featdef_from, Uint2 featdef_to); 283 NLM_EXTERN Boolean ConvertRNAToImpFeat (SeqFeatPtr sfp, Int4 featdef_to); 284 285 NLM_EXTERN void ApplyTextTransformsToString (CharPtr PNTR str, ValNodePtr transform_list); 286 NLM_EXTERN CharPtr GetTextPortionFromString (CharPtr str, TextPortionPtr text_portion); 287 NLM_EXTERN Boolean RemoveTextPortionFromString (CharPtr str, TextPortionPtr text_portion); 288 NLM_EXTERN Boolean IsTextMarkerEmpty (TextMarkerPtr marker); 289 NLM_EXTERN TextMarkerPtr MakeTextTextMarker (CharPtr text); 290 291 NLM_EXTERN Uint2 GetEntityIdFromObject (Uint1 choice, Pointer data); 292 293 typedef struct aecrsample { 294 FieldTypePtr field; 295 CharPtr first_value; 296 Int4 num_found; 297 Boolean all_same; 298 } AECRSampleData, PNTR AECRSamplePtr; 299 300 NLM_EXTERN AECRSamplePtr AECRSampleFree (AECRSamplePtr sample); 301 302 NLM_EXTERN ValNodePtr AECRSampleListFree (ValNodePtr list); 303 NLM_EXTERN ValNodePtr GetAECRSampleListForSeqEntry (Uint1 field_type, SeqEntryPtr sep); 304 NLM_EXTERN ValNodePtr GetAECRSampleList (AECRActionPtr act, SeqEntryPtr sep); 305 NLM_EXTERN AECRSamplePtr GetFieldSampleFromList (ValNodePtr list, FieldTypePtr field); 306 NLM_EXTERN void GetAECRExistingTextList (Uint1 field_type, SeqEntryPtr sep, FILE *fp); 307 NLM_EXTERN AECRSamplePtr GetAECRSampleFromObjectList (ValNodePtr object_list, FieldTypePtr field); 308 NLM_EXTERN AECRSamplePtr GetAECRSampleFromObjectListEx (ValNodePtr object_list, FieldTypePtr field, BatchExtraPtr batch_extra); 309 310 NLM_EXTERN AECRSamplePtr GetExistingTextForParseAction (ParseActionPtr action, SeqEntryPtr sep); 311 312 NLM_EXTERN void ExportFieldTable (Uint1 field_type, ValNodePtr src_field_list, SeqEntryPtr sep, FILE *fp); 313 314 NLM_EXTERN ValNodePtr GetFieldListForFieldType (Uint1 field_type, SeqEntryPtr sep); 315 NLM_EXTERN int LIBCALLBACK SortVnpByFieldType (VoidPtr ptr1, VoidPtr ptr2); 316 NLM_EXTERN int LIBCALLBACK SortVnpByFieldTypeAndSourceQualifier (VoidPtr ptr1, VoidPtr ptr2); 317 318 NLM_EXTERN ValNodePtr GetSourceQualFieldListFromBioSource (BioSourcePtr biop); 319 NLM_EXTERN void SortUniqueFieldTypeList (ValNodePtr PNTR field_list); 320 NLM_EXTERN ValNodePtr LIBCALLBACK FieldTypeListFree (ValNodePtr list); 321 NLM_EXTERN ValNodePtr LIBCALLBACK FieldTypeListCopy (ValNodePtr orig); 322 323 NLM_EXTERN void ApplyMolinfoBlockToSeqEntry (SeqEntryPtr sep, MolinfoBlockPtr mib); 324 325 NLM_EXTERN CharPtr GetDescriptorNameFromDescriptorType (Int4 descriptortype); 326 NLM_EXTERN void AddAllDescriptorsToChoiceList (ValNodePtr PNTR descriptor_type_list); 327 328 NLM_EXTERN Boolean IsFixPubCapsActionEmpty (FixPubCapsActionPtr action); 329 330 NLM_EXTERN void ApplyMacroToSeqEntry (SeqEntryPtr sep, ValNodePtr macro); 331 NLM_EXTERN Boolean ApplyMacroToSeqEntryEx (SeqEntryPtr sep, ValNodePtr macro, FILE *log_fp, GlobalAlignFunc align_func); 332 NLM_EXTERN Boolean ApplyMacroToSeqEntryExEx (SeqEntryPtr sep, ValNodePtr macro, FILE *log_fp, GlobalAlignFunc align_func, Int4Ptr pNumNoOp); 333 NLM_EXTERN Boolean PreprocessMacroForRepeatedUse (ValNodePtr macro, FILE *log_fp); 334 NLM_EXTERN void CleanupMacroAfterRepeatedUse (ValNodePtr macro); 335 336 NLM_EXTERN SeqFeatPtr ApplyOneFeatureToBioseq (BioseqPtr bsp, Uint1 featdef, SeqLocPtr slp, ValNodePtr fields, ValNodePtr src_fields, Boolean add_mrna); 337 338 /* for generating text representations of macro objects */ 339 NLM_EXTERN CharPtr SummarizeSourceQual (ValNodePtr field); 340 NLM_EXTERN CharPtr FeatureFieldLabel (CharPtr feature_name, ValNodePtr field); 341 NLM_EXTERN Boolean IsFeatureFieldEmpty (FeatureFieldPtr field); 342 NLM_EXTERN Boolean IsFieldTypeEmpty (FieldTypePtr field); 343 NLM_EXTERN CharPtr SummarizeFieldType (ValNodePtr vnp); 344 NLM_EXTERN Boolean IsFieldTypeNonText (ValNodePtr field_type); 345 NLM_EXTERN CharPtr SummarizeExistingText (Uint2 existing_text); 346 NLM_EXTERN Boolean IsTextTransformEmpty (ValNodePtr vnp); 347 extern const CharPtr kTaxnameAfterBinomialString; 348 NLM_EXTERN CharPtr SummarizeTextPortion (TextPortionPtr text_portion); 349 NLM_EXTERN CharPtr SummarizeTextTransform (ValNodePtr transform); 350 NLM_EXTERN CharPtr SummarizeParseSrc (ValNodePtr src); 351 NLM_EXTERN CharPtr SummarizeParseDst (ValNodePtr dst); 352 NLM_EXTERN CharPtr SummarizeAECRAction (AECRActionPtr a); 353 NLM_EXTERN CharPtr SummarizeParseAction (ParseActionPtr p); 354 NLM_EXTERN CharPtr SummarizeAutodefAction (AutodefActionPtr autodef); 355 NLM_EXTERN CharPtr SummarizeRemoveDescriptorAction (RemoveDescriptorActionPtr a); 356 NLM_EXTERN CharPtr SummarizeFixPubCapsAction (FixPubCapsActionPtr a); 357 NLM_EXTERN CharPtr SummarizeFixCapsAction (FixCapsActionPtr action); 358 NLM_EXTERN CharPtr SummarizeFixFormatAction (FixFormatActionPtr action); 359 NLM_EXTERN CharPtr SummarizeSortFieldsAction (SortFieldsActionPtr action); 360 NLM_EXTERN CharPtr SummarizeMolinfoBlockAction (MolinfoBlockPtr mib); 361 NLM_EXTERN CharPtr SummarizeRemoveDuplicateFeaturesAction (RemoveDuplicateFeatureActionPtr action); 362 NLM_EXTERN CharPtr SummarizeAuthorFixAction (AuthorFixActionPtr a); 363 NLM_EXTERN CharPtr SummarizeWordSubstitution (WordSubstitutionPtr word); 364 NLM_EXTERN CharPtr SummarizeFeatureStrandedness (Uint2 strandedness); 365 NLM_EXTERN CharPtr SummarizeStringConstraint (StringConstraintPtr constraint); 366 NLM_EXTERN CharPtr SummarizeStringConstraintEx (StringConstraintPtr constraint, Boolean short_version); 367 NLM_EXTERN CharPtr SummarizeConstraintSet (ValNodePtr constraint_set); 368 NLM_EXTERN CharPtr SummarizeConstraint (ValNodePtr constraint); 369 NLM_EXTERN CharPtr SummarizeUpdateSequencesAction (UpdateSequencesActionPtr action); 370 NLM_EXTERN CharPtr SummarizePerformAutofixAction (AutofixActionPtr action); 371 NLM_EXTERN CharPtr SummarizeFixSetsAction (FixSetsActionPtr action); 372 NLM_EXTERN CharPtr SummarizeApplyTableAction (ApplyTableActionPtr action); 373 NLM_EXTERN CharPtr SummarizeRemoveSequencesAction (RemoveSequencesActionPtr action); 374 NLM_EXTERN CharPtr SummarizePropagateSequenceTechnology (Pointer action); 375 NLM_EXTERN CharPtr SummarizeMacroAction (ValNodePtr vnp); 376 377 378 extern const CharPtr s_QuantityWords []; 379 extern const Int4 k_NumQuantityWords; 380 extern const CharPtr s_SpecialPubFieldWords []; 381 extern const Int4 k_NumSpecialPubFieldWords; 382 383 NLM_EXTERN Boolean AllowFieldMulti (FieldTypePtr field); 384 385 NLM_EXTERN CharPtr GetFieldValueForObject (Uint1 choice, Pointer data, FieldTypePtr field, StringConstraintPtr scp); 386 NLM_EXTERN CharPtr GetFieldValueForObjectEx (Uint1 choice, Pointer data, FieldTypePtr field, StringConstraintPtr scp, BatchExtraPtr batch_extra); 387 NLM_EXTERN Boolean SetFieldValueForObject (Uint1 choice, Pointer data, FieldTypePtr field, StringConstraintPtr scp, CharPtr value, Uint2 existing_text); 388 NLM_EXTERN Boolean SetFieldValueForObjectEx (Uint1 choice, Pointer data, FieldTypePtr field, StringConstraintPtr scp, CharPtr value, Uint2 existing_text, BatchExtraPtr batch_extra); 389 NLM_EXTERN BioseqPtr GetSequenceForObject (Uint1 choice, Pointer data); 390 NLM_EXTERN ValNodePtr GetMultipleFieldValuesForObject (Uint1 choice, Pointer data, FieldTypePtr field, StringConstraintPtr scp, BatchExtraPtr batch_extra); 391 392 NLM_EXTERN void InitValNodeBlock (ValNodeBlockPtr vnbp, ValNodePtr list); 393 NLM_EXTERN void ValNodeAddPointerToEnd (ValNodeBlockPtr vnbp, Uint1 choice, Pointer data); 394 NLM_EXTERN void ValNodeAddPointerToFront (ValNodeBlockPtr vnbp, Uint1 choice, Pointer data); 395 NLM_EXTERN void ValNodeLinkToEnd (ValNodeBlockPtr vnbp, ValNodePtr list); 396 NLM_EXTERN void ValNodeSortBlock (ValNodeBlockPtr vnbp, int (LIBCALLBACK *compar )PROTO ((Nlm_VoidPtr, Nlm_VoidPtr ))); 397 398 399 typedef enum { 400 eTableMatchFeatureID = 1, 401 eTableMatchGeneLocusTag, 402 eTableMatchProteinID, 403 eTableMatchDbxref, 404 eTableMatchNucID, 405 eTableMatchBioSource, 406 eTableMatchSourceQual, 407 eTableMatchProteinName, /* J. Chen */ 408 eTableMatchBioProject, 409 eTableMatchAny 410 } ETableMatchType; 411 412 413 typedef struct matchtype { 414 Uint1 choice; 415 Pointer data; 416 Uint1 match_location; 417 } MatchTypeData, PNTR MatchTypePtr; 418 419 typedef struct tabcolumnconfig { 420 MatchTypePtr match_type; 421 FieldTypePtr field; 422 Uint2 existing_text; 423 Boolean skip_blank; 424 Boolean match_mrna; 425 ValNodePtr constraint; 426 } TabColumnConfigData, PNTR TabColumnConfigPtr; 427 428 429 430 NLM_EXTERN MatchTypePtr MatchTypeNew (); 431 NLM_EXTERN MatchTypePtr MatchTypeFree (MatchTypePtr match_type); 432 433 NLM_EXTERN TabColumnConfigPtr TabColumnConfigNew (void); 434 NLM_EXTERN TabColumnConfigPtr TabColumnConfigFree (TabColumnConfigPtr t); 435 NLM_EXTERN TabColumnConfigPtr TabColumnConfigCopy (TabColumnConfigPtr orig); 436 NLM_EXTERN void TabColumnConfigReset (TabColumnConfigPtr t); 437 NLM_EXTERN ValNodePtr TabColumnConfigListFree (ValNodePtr columns); 438 NLM_EXTERN ValNodePtr TabColumnConfigListCopy (ValNodePtr orig); 439 NLM_EXTERN MatchTypePtr MatchTypeFromTableMatchType (TableMatchPtr t); 440 NLM_EXTERN TableMatchPtr TableMatchTypeFromMatchType (MatchTypePtr m); 441 442 NLM_EXTERN ValNodePtr ValidateTabTableValues (ValNodePtr table, ValNodePtr columns); 443 NLM_EXTERN ValNodePtr CheckForDuplicateColumns (ValNodePtr columns); 444 NLM_EXTERN void FixDuplicateColumns (ValNodePtr columns); 445 NLM_EXTERN ValNodePtr ValidateFeatureFieldColumnNames (ValNodePtr header_line, ValNodePtr PNTR perr_list); 446 NLM_EXTERN ValNodePtr FreeObjectTableForTabTable (ValNodePtr table); 447 NLM_EXTERN ValNodePtr GetObjectTableForTabTable (SeqEntryPtr sep, ValNodePtr table, ValNodePtr columns, ValNodePtr PNTR p_err_list); 448 NLM_EXTERN ValNodePtr GetSequenceListsForMatchTypeInTabTable (SeqEntryPtr sep, ValNodePtr table, Int4 col, MatchTypePtr match_type, ValNodePtr PNTR p_err_list); 449 NLM_EXTERN ValNodePtr FreeSequenceLists (ValNodePtr lists); 450 NLM_EXTERN ValNodePtr ApplyTableValuesToObjectTable (SeqEntryPtr sep, ValNodePtr table, ValNodePtr columns, ValNodePtr obj_table); 451 NLM_EXTERN ValNodePtr CheckObjTableForRowsThatApplyToTheSameDestination (ValNodePtr obj_table); 452 NLM_EXTERN ValNodePtr CheckObjTableForExistingText (SeqEntryPtr sep, ValNodePtr table, ValNodePtr columns, ValNodePtr obj_table); 453 454 NLM_EXTERN ValNodePtr ApplyTableToFeatures (SeqEntryPtr sep, ValNodePtr table, ValNodePtr columns); 455 NLM_EXTERN ValNodePtr CheckTableForExistingText (SeqEntryPtr sep, ValNodePtr table, ValNodePtr columns); 456 457 NLM_EXTERN SeqFeatPtr GetmRNAForFeature (SeqFeatPtr sfp); 458 NLM_EXTERN Boolean AdjustmRNAProductToMatchProteinProduct (SeqFeatPtr sfp); 459 NLM_EXTERN Boolean IsFieldTypeCDSProduct (FieldTypePtr ft); 460 461 NLM_EXTERN ValNodePtr GetPublicationTitlesInSep (SeqEntryPtr sep); 462 NLM_EXTERN ValNodePtr GetBankitCommentsInSep (SeqEntryPtr sep); 463 NLM_EXTERN ValNodePtr GetPublicationTitlesOnSep (SeqEntryPtr sep); 464 NLM_EXTERN ValNodePtr GetBankitCommentsOnSep (SeqEntryPtr sep); 465 466 NLM_EXTERN BioseqPtr GetRepresentativeBioseqFromBioseqSet (BioseqSetPtr bssp); 467 468 NLM_EXTERN ValNodePtr ValNodeCopyPtr (ValNodePtr orig); 469 NLM_EXTERN SeqLocPtr ParseSimpleSeqLoc (CharPtr str, BioseqPtr bsp); 470 471 NLM_EXTERN void FixCapitalizationInString (CharPtr PNTR pTitle, Uint2 capitalization, ValNodePtr org_names); 472 473 NLM_EXTERN Boolean GBBlockIsCompletelyEmpty (GBBlockPtr gb); 474 475 NLM_EXTERN CharPtr GetObjectIdString (ObjectIdPtr oip); 476 NLM_EXTERN Boolean SetObjectIdString (ObjectIdPtr oip, CharPtr value, Uint2 existing_text); 477 478 NLM_EXTERN void SplitPCRPrimersByPosition (SeqEntryPtr sep); 479 NLM_EXTERN void SplitPCRPrimersByConstraints (SeqEntryPtr sep, StringConstraintPtr scp_fwd, StringConstraintPtr scp_rev); 480 NLM_EXTERN void MergePCRPrimers (SeqEntryPtr sep); 481 482 NLM_EXTERN SubSourcePtr FindBadLatLon (BioSourcePtr biop); 483 NLM_EXTERN Boolean LatLonAutocorrectList (FILE *fp, ValNodePtr object_list); 484 NLM_EXTERN void FixiPCRPrimerSeqsCallback (BioSourcePtr biop, Pointer data); 485 486 NLM_EXTERN Boolean HasTaxonomyID (BioSourcePtr biop); 487 488 NLM_EXTERN ProtRefPtr GetProtRefForFeature (SeqFeatPtr sfp); 489 490 NLM_EXTERN Boolean StripSuffixFromAuthor (AuthorPtr pAuthor); 491 NLM_EXTERN Boolean TruncateAuthorMiddleInitials (AuthorPtr pAuthor); 492 NLM_EXTERN CharPtr GetAuthorListString (AuthListPtr alp, StringConstraintPtr scp); 493 NLM_EXTERN ValNodePtr ReadNameListFromString (CharPtr value); 494 495 NLM_EXTERN Int4 ConvertLocalIdsToTSAIds (SeqEntryPtr sep, CharPtr suffix, TextPortionPtr tp); 496 NLM_EXTERN Int4 CreateTSAIDsFromDeflineInSep (SeqEntryPtr sep, CharPtr suffix, TextPortionPtr t); 497 NLM_EXTERN Int4 EditTSAIds (SeqEntryPtr sep, CharPtr suffix, TextPortionPtr tp); 498 NLM_EXTERN CharPtr SummarizeCreateTSAIDsAction (CreateTSAIdsActionPtr action); 499 500 501 /* for product name rules */ 502 NLM_EXTERN Int4 CountSuspectRuleSet (SuspectRuleSetPtr set); 503 504 NLM_EXTERN Boolean IsSearchFuncEmpty (SearchFuncPtr func); 505 NLM_EXTERN Boolean IsSuspectRuleEmpty (SuspectRulePtr rule); 506 507 NLM_EXTERN CharPtr SummarizeSearchFunc (SearchFuncPtr func, Boolean short_version); 508 NLM_EXTERN CharPtr SummarizeReplaceFunc (ReplaceFuncPtr replace, Boolean short_version); 509 NLM_EXTERN CharPtr SummarizeFixType (Uint2 fix_type); 510 NLM_EXTERN CharPtr SummarizeReplaceRule (ReplaceRulePtr replace, Boolean short_version); 511 NLM_EXTERN CharPtr SummarizeSuspectRule (SuspectRulePtr rule); 512 NLM_EXTERN CharPtr SummarizeSuspectRuleEx (SuspectRulePtr rule, Boolean short_version); 513 514 515 NLM_EXTERN Boolean StringMayContainPlural (CharPtr search); 516 NLM_EXTERN Boolean ContainsNorMoreSetsOfBracketsOrParentheses (CharPtr search, Int4 n); 517 NLM_EXTERN Boolean ContainsThreeOrMoreNumbersTogether (CharPtr search); 518 NLM_EXTERN Boolean IsPrefixPlusNumbers (CharPtr prefix, CharPtr search); 519 NLM_EXTERN Boolean StringContainsUnbalancedParentheses (CharPtr search); 520 NLM_EXTERN Boolean StringContainsUnderscore (CharPtr search); 521 NLM_EXTERN Boolean ProductContainsTerm (CharPtr pattern, CharPtr search); 522 523 NLM_EXTERN Boolean DoesStringMatchSuspectRule (CharPtr str, SeqFeatPtr sfp, SuspectRulePtr rule); 524 NLM_EXTERN ValNodePtr GetFeaturesForSuspectRules (SeqEntryPtr sep, SuspectRuleSetPtr rules, Uint2 featdef); 525 NLM_EXTERN ValNodePtr FreeListOfObjectLists (ValNodePtr list); 526 NLM_EXTERN void PrintSuspectRuleMatches (SeqEntryPtr sep, SuspectRuleSetPtr rules, FILE *fp); 527 NLM_EXTERN ValNodePtr GetSuspectRuleDiscrepancies (SeqEntryPtr sep, SuspectRuleSetPtr rules, Uint2 featdef, Uint4 clickable_item_type); 528 NLM_EXTERN Int4 ApplySuspectRuleFixesToSeqEntry (SeqEntryPtr sep, SuspectRuleSetPtr rules, FILE *fp); 529 530 NLM_EXTERN Boolean ApplySuspectProductNameFixToString (SuspectRulePtr rule, CharPtr PNTR str); 531 NLM_EXTERN Boolean ApplySuspectProductNameFixToFeature (SuspectRulePtr rule, SeqFeatPtr cds, FILE *fp); 532 NLM_EXTERN void SortSuspectRuleSetByFind (SuspectRuleSetPtr PNTR rules); 533 NLM_EXTERN void SortSuspectRuleSetByFixTypeThenFind (SuspectRuleSetPtr PNTR rules); 534 535 NLM_EXTERN void FindDiffsBetweenRuleSets (SuspectRuleSetPtr set1, SuspectRuleSetPtr set2, SuspectRuleSetPtr PNTR in1not2, SuspectRuleSetPtr PNTR in2not1); 536 NLM_EXTERN Boolean FindSuspectProductNamesInEntrezGene (FILE *input_file, SuspectRuleSetPtr rule_list, FILE *output_file); 537 NLM_EXTERN Boolean FixSuspectProductNamesInEntrezGene (FILE *input_file, SuspectRuleSetPtr rule_list, FILE *output_file); 538 NLM_EXTERN void FindSuspectProductNamesInNameList (FILE *input_file, SuspectRuleSetPtr rule_list, FILE *output_file); 539 NLM_EXTERN void FixSuspectProductNamesInNameList (FILE *input_file, SuspectRuleSetPtr rule_list, FILE *output_file); 540 541 542 /* declarations for product update table handling */ 543 NLM_EXTERN ValNodePtr ReadProductUpdateTable (FILE *fp); 544 NLM_EXTERN ValNodePtr ProductUpdateTableFree (ValNodePtr list); 545 NLM_EXTERN Boolean ApplyProductUpdateTable (ValNodePtr table, SeqEntryPtr sep, FILE *log_fp); 546 NLM_EXTERN void ExportProductUpdateTable (SeqEntryPtr sep, FILE *fp); 547 NLM_EXTERN void ExportProductUpdateTableWithPrecomputedSuggestions (FILE *fp, SeqEntryPtr sep, SuspectRuleSetPtr rules); 548 549 NLM_EXTERN ValNodePtr GetBioseqMatchesForSequenceIDs (ValNodePtr query_list, Uint1 match_location, SeqEntryPtr sep); 550 551 NLM_EXTERN ValNodePtr ShuffleUpdateBioseqListWithIndex (ValNodePtr PNTR update_bioseq_list, ValNodePtr orig_bioseq_list); 552 553 NLM_EXTERN Boolean IsUserFieldStructuredCommentPrefixOrSuffix (UserFieldPtr ufp); 554 555 556 NLM_EXTERN void ConvertListToMiscFeat (ValNodePtr list, Boolean remove_gene, LogInfoPtr lip); 557 NLM_EXTERN Boolean TrimStopsFromCompleteCodingRegions (SeqEntryPtr sep, FILE *log_fp); 558 NLM_EXTERN Boolean DoFeaturesMatch (SeqFeatPtr sfp1, SeqFeatPtr sfp2, Boolean allow_different_sequences, Boolean case_sensitive, Boolean ignore_partial); 559 560 561 #ifdef __cplusplus 562 } 563 #endif 564 565 #endif 566