summaryrefslogtreecommitdiff
path: root/api/sqnutil1.c
diff options
context:
space:
mode:
Diffstat (limited to 'api/sqnutil1.c')
-rw-r--r--api/sqnutil1.c70
1 files changed, 61 insertions, 9 deletions
diff --git a/api/sqnutil1.c b/api/sqnutil1.c
index e44797e5..432b130c 100644
--- a/api/sqnutil1.c
+++ b/api/sqnutil1.c
@@ -29,7 +29,7 @@
*
* Version Creation Date: 9/2/97
*
-* $Revision: 6.369 $
+* $Revision: 6.376 $
*
* File Description:
*
@@ -2685,9 +2685,7 @@ static Boolean HandledGBQualOnGene (SeqFeatPtr sfp, GBQualPtr gbq)
Int2 choice = 0;
GeneRefPtr grp;
- if (StringICmp (gbq->qual, "pseudo") == 0) {
- choice = 1;
- } else if (StringICmp (gbq->qual, "map") == 0) {
+ if (StringICmp (gbq->qual, "map") == 0) {
choice = 2;
} else if (StringICmp (gbq->qual, "allele") == 0) {
choice = 3;
@@ -2698,9 +2696,6 @@ static Boolean HandledGBQualOnGene (SeqFeatPtr sfp, GBQualPtr gbq)
grp = (GeneRefPtr) sfp->data.value.ptrvalue;
if (grp == NULL) return FALSE;
switch (choice) {
- case 1 :
- grp->pseudo = TRUE;
- break;
case 2 :
if (grp->maploc != NULL) return FALSE;
if (StringHasNoText (gbq->val)) return FALSE;
@@ -2785,6 +2780,7 @@ extern Boolean ParseAnticodon (SeqFeatPtr sfp, CharPtr val, Int4 offset)
{
Int4 diff;
+ Int2 j;
Boolean locmap;
int num_errs;
CharPtr pos;
@@ -2809,6 +2805,12 @@ extern Boolean ParseAnticodon (SeqFeatPtr sfp, CharPtr val, Int4 offset)
rrp->ext.choice = 2;
trp = (tRNAPtr) MemNew (sizeof (tRNA));
rrp->ext.value.ptrvalue = (Pointer) trp;
+ if (trp != NULL) {
+ trp->aatype = 2;
+ for (j = 0; j < 6; j++) {
+ trp->codon [j] = 255;
+ }
+ }
}
if (rrp->ext.choice != 2) return FALSE;
@@ -5201,7 +5203,8 @@ static void FixOldDbxrefs (ValNodePtr vnp)
dbt->db = MemFree (dbt->db);
dbt->db = StringSave ("SubtiList");
}
- if (StringICmp (dbt->db, "Swiss-Prot") == 0) {
+ if (StringICmp (dbt->db, "Swiss-Prot") == 0 ||
+ StringICmp (dbt->db, "SWISSPROT") == 0) {
dbt->db = MemFree (dbt->db);
dbt->db = StringSave ("UniProt/Swiss-Prot");
} else if (StringICmp (dbt->db, "TrEMBL") == 0) {
@@ -7658,6 +7661,7 @@ NLM_EXTERN void CleanUpSeqFeat (
BioseqPtr bsp;
CodeBreakPtr cbp;
CdRegionPtr crp;
+ GeneRefPtr grp;
Boolean hasNulls;
SeqIdPtr id;
ImpFeatPtr ifp;
@@ -7774,7 +7778,15 @@ NLM_EXTERN void CleanUpSeqFeat (
CleanupSeqLoc (sfp->location);
strand = SeqLocStrand (sfp->location);
id = SeqLocId (sfp->location);
- if (sfp->data.choice == SEQFEAT_CDREGION) {
+ if (sfp->data.choice == SEQFEAT_GENE) {
+ grp = (GeneRefPtr) sfp->data.value.ptrvalue;
+ if (grp != NULL) {
+ if (grp->pseudo) {
+ sfp->pseudo = TRUE;
+ grp->pseudo = FALSE;
+ }
+ }
+ } else if (sfp->data.choice == SEQFEAT_CDREGION) {
crp = (CdRegionPtr) sfp->data.value.ptrvalue;
if (crp != NULL) {
crp->code_break = SortCodeBreaks (sfp, crp->code_break);
@@ -7797,6 +7809,12 @@ NLM_EXTERN void CleanUpSeqFeat (
}
} else if (sfp->data.choice == SEQFEAT_RNA) {
rrp = (RnaRefPtr) sfp->data.value.ptrvalue;
+ if (rrp != NULL) {
+ if (rrp->pseudo) {
+ sfp->pseudo = TRUE;
+ rrp->pseudo = FALSE;
+ }
+ }
if (rrp != NULL && rrp->ext.choice == 2) {
trp = (tRNAPtr) rrp->ext.value.ptrvalue;
if (trp != NULL && trp->anticodon != NULL) {
@@ -9827,6 +9845,40 @@ NLM_EXTERN Int4 VisitUserObjectsInUop (UserObjectPtr uop, Pointer userdata, Visi
return index;
}
+typedef struct uopdata {
+ UserObjectPtr rsult;
+ CharPtr tag;
+} UopData, PNTR UopDataPtr;
+
+static void FindUopProc (
+ UserObjectPtr uop,
+ Pointer userdata
+)
+
+{
+ ObjectIdPtr oip;
+ UopDataPtr udp;
+
+ if (uop == NULL || userdata == NULL) return;
+ oip = uop->type;
+ if (oip == NULL) return;
+ udp = (UopDataPtr) userdata;
+ if (StringICmp (oip->str, udp->tag) != 0) return;
+ udp->rsult = uop;
+}
+
+NLM_EXTERN UserObjectPtr FindUopByTag (UserObjectPtr top, CharPtr tag)
+
+{
+ UopData ud;
+
+ if (top == NULL || StringHasNoText (tag)) return NULL;
+ ud.rsult = NULL;
+ ud.tag = tag;
+ VisitUserObjectsInUop (top, (Pointer) &ud, FindUopProc);
+ return ud.rsult;
+}
+
NLM_EXTERN UserObjectPtr CombineUserObjects (UserObjectPtr origuop, UserObjectPtr newuop)
{