248
265
ValNodeLink (&err_list, ApplyTranscriptomeIdListWithProgress (ids_list, GetSeqAlignTSA));
250
267
coverage_report = ReportCoverageForTranscriptomeIdsListSeqHist (ids_list);
268
ValNodeLink (&coverage_report, ReportGapsInSeqHistAlignmentsForIdsList (ids_list));
252
270
ids_list = TranscriptomeIdsListFree (ids_list);
254
272
ValNodeLink (&coverage_report, err_list);
255
273
err_list = coverage_report;
275
lip = OpenLog ("TSA Table Problems");
257
276
if (err_list != NULL) {
258
lip = OpenLog ("TSA Table Problems");
259
277
for (vnp = err_list; vnp != NULL; vnp = vnp->next) {
260
278
fprintf (lip->fp, "%s\n", vnp->data.ptrvalue);
262
280
lip->data_in_log = TRUE;
265
281
err_list = ValNodeFreeData (err_list);
283
VisitBioseqsInSep (sep, lip, ReportNonTSABioseqs);
267
287
ObjMgrSetDirtyFlag (bfp->input_entityID, TRUE);
268
288
ObjMgrSendMsg (OM_MSG_UPDATE, bfp->input_entityID, 0, 0);
294
314
ValNodeLink (&err_list, ApplyTranscriptomeIdListWithProgress (ids_list, GetSeqAlignTSA));
296
316
coverage_report = ReportCoverageForTranscriptomeIdsListSeqHist (ids_list);
317
ValNodeLink (&coverage_report, ReportGapsInSeqHistAlignmentsForIdsList (ids_list));
298
319
ids_list = TranscriptomeIdsListFree (ids_list);
300
321
ValNodeLink (&coverage_report, err_list);
301
322
err_list = coverage_report;
325
lip = OpenLog ("TSA Table Problems");
303
326
if (err_list != NULL) {
304
lip = OpenLog ("TSA Table Problems");
305
327
for (vnp = err_list; vnp != NULL; vnp = vnp->next) {
306
328
fprintf (lip->fp, "%s\n", vnp->data.ptrvalue);
308
330
lip->data_in_log = TRUE;
311
331
err_list = ValNodeFreeData (err_list);
333
VisitBioseqsInSep (sep, lip, ReportNonTSABioseqs);
313
337
ObjMgrSetDirtyFlag (bfp->input_entityID, TRUE);
314
338
ObjMgrSendMsg (OM_MSG_UPDATE, bfp->input_entityID, 0, 0);
363
static void CreateTSAIDsFromTable (IteM i)
367
Char path [PATH_MAX];
369
ValNodePtr table, sequence_lists, err_list = NULL, vnp, vnp_rs, vnp_s, vnp_rt, vnp_t;
376
CharPtr id_fmt = "gpid:%d";
379
bfp = currentFormDataPtr;
381
bfp = GetObjectExtra (i);
383
if (bfp == NULL) return;
384
sep = GetTopSeqEntryForEntityID (bfp->input_entityID);
385
if (sep == NULL) return;
387
if (! GetInputFileName (path, sizeof (path), "", "TEXT")) return;
388
fp = FileOpen (path, "r");
389
if (fp == NULL) return;
390
table = ReadTabTableFromFile (fp);
393
match.choice = eTableMatchNucID;
395
match.match_location = String_location_equals;
397
sequence_lists = GetSequenceListsForMatchTypeInTabTable (sep, table, 0, &match, &err_list);
399
if (err_list != NULL) {
400
lip = OpenLog ("Table Problems");
401
for (vnp = err_list; vnp != NULL; vnp = vnp->next) {
402
fprintf (lip->fp, "%s\n", vnp->data.ptrvalue);
404
lip->data_in_log = TRUE;
407
err_list = ValNodeFreeData (err_list);
408
if (ANS_YES != Message (MSG_YN, "Continue with table problems")) {
409
sequence_lists = FreeSequenceLists(sequence_lists);
410
table = FreeTabTable (table);
417
for (vnp_rs = sequence_lists, vnp_rt = table;
418
vnp_rs != NULL && vnp_rt != NULL;
419
vnp_rs = vnp_rs->next, vnp_rt = vnp_rt->next) {
420
vnp_s = vnp_rs->data.ptrvalue;
421
vnp_t = vnp_rt->data.ptrvalue;
422
if (vnp_s == NULL || vnp_t == NULL) {
426
if (vnp_t == NULL || StringHasNoText (vnp_t->data.ptrvalue)) {
429
while (vnp_s != NULL) {
430
bsp = (BioseqPtr) vnp_s->data.ptrvalue;
431
gpid = GetGenomeProjectID (bsp);
434
dbtag->db = MemNew (sizeof (Char) * (StringLen (id_fmt) + 15));
435
sprintf (dbtag->db, id_fmt, gpid);
436
dbtag->tag = ObjectIdNew ();
437
dbtag->tag->str = StringSave (vnp_t->data.ptrvalue);
438
sip_new = ValNodeNew (NULL);
439
sip_new->choice = SEQID_GENERAL;
440
sip_new->data.ptrvalue = dbtag;
441
sip_new->next = bsp->id;
443
SeqMgrReplaceInBioseqIndex (bsp);
448
sequence_lists = FreeSequenceLists(sequence_lists);
449
table = FreeTabTable (table);
450
ObjMgrSetDirtyFlag (bfp->input_entityID, TRUE);
451
ObjMgrSendMsg (OM_MSG_UPDATE, bfp->input_entityID, 0, 0);
458
static void CreateBarcodeIDsFromLocalIDs (IteM i)
464
bfp = currentFormDataPtr;
466
bfp = GetObjectExtra (i);
468
if (bfp == NULL) return;
469
sep = GetTopSeqEntryForEntityID (bfp->input_entityID);
470
if (sep == NULL) return;
472
ConvertLocalIdsToBarcodeIds (sep);
474
ObjMgrSetDirtyFlag (bfp->input_entityID, TRUE);
475
ObjMgrSendMsg (OM_MSG_UPDATE, bfp->input_entityID, 0, 0);
339
479
static void AddmRNASequenceCallback (SeqDescrPtr sdp, Pointer data)
341
481
Int4 len, len_add;
2406
2549
sfp = SeqMgrGetNextFeature (bsp, NULL, 0, 0, &fcontext);
2407
2550
while (sfp != NULL) {
2408
if (sfp->data.choice != SEQFEAT_GENE) {
2409
grp = SeqMgrGetGeneXref (sfp);
2410
if (grp != NULL && (! SeqMgrGeneIsSuppressed (grp))) {
2411
sfpx = SeqMgrGetOverlappingGene (sfp->location, NULL);
2412
if (sfpx != NULL && sfpx->data.choice == SEQFEAT_GENE) {
2413
grpx = (GeneRefPtr) sfpx->data.value.ptrvalue;
2416
redundantgenexref = TRUE;
2417
if ((!StringHasNoText (grp->locus)) && (!StringHasNoText (grpx->locus))) {
2418
if ((StringICmp (grp->locus, grpx->locus) != 0)) {
2419
redundantgenexref = FALSE;
2421
} else if (StringDoesHaveText (grp->locus_tag) && StringDoesHaveText (grp->locus_tag)) {
2422
if ((StringICmp (grp->locus_tag, grpx->locus_tag) != 0)) {
2423
redundantgenexref = FALSE;
2425
} else if (grp->syn != NULL && grpx->syn != NULL) {
2426
syn1 = (CharPtr) grp->syn->data.ptrvalue;
2427
syn2 = (CharPtr) grpx->syn->data.ptrvalue;
2428
if ((!StringHasNoText (syn1)) && (!StringHasNoText (syn2))) {
2429
if ((StringICmp (syn1, syn2) != 0)) {
2430
redundantgenexref = FALSE;
2435
if (redundantgenexref) {
2436
MemSet ((Pointer) &dsd, 0, sizeof (DummySmfeData));
2439
count = SeqMgrGetAllOverlappingFeatures (sfp->location, FEATDEF_GENE, NULL, 0,
2440
LOCATION_SUBSET, (Pointer) &dsd, SQNDummySMFEProc);
2442
if (dsd.num_at_max < 2) {
2443
last = (SeqFeatXrefPtr PNTR) &(sfp->xref);
2445
while (curr != NULL) {
2447
if (curr->data.choice == SEQFEAT_GENE) {
2450
SeqFeatXrefFree (curr);
2452
last = &(curr->next);
2551
grp = SeqMgrGetGeneXref (sfp);
2552
if (grp != NULL && (! SeqMgrGeneIsSuppressed (grp))) {
2553
sfpx = SeqMgrGetOverlappingGene (sfp->location, NULL);
2554
if (sfpx != NULL && sfpx->data.choice == SEQFEAT_GENE) {
2555
grpx = (GeneRefPtr) sfpx->data.value.ptrvalue;
2558
redundantgenexref = TRUE;
2559
if ((!StringHasNoText (grp->locus)) && (!StringHasNoText (grpx->locus))) {
2560
if ((StringICmp (grp->locus, grpx->locus) != 0)) {
2561
redundantgenexref = FALSE;
2563
} else if (StringDoesHaveText (grp->locus_tag) && StringDoesHaveText (grp->locus_tag)) {
2564
if ((StringICmp (grp->locus_tag, grpx->locus_tag) != 0)) {
2565
redundantgenexref = FALSE;
2567
} else if (grp->syn != NULL && grpx->syn != NULL) {
2568
syn1 = (CharPtr) grp->syn->data.ptrvalue;
2569
syn2 = (CharPtr) grpx->syn->data.ptrvalue;
2570
if ((!StringHasNoText (syn1)) && (!StringHasNoText (syn2))) {
2571
if ((StringICmp (syn1, syn2) != 0)) {
2572
redundantgenexref = FALSE;
2577
if (redundantgenexref) {
2578
MemSet ((Pointer) &dsd, 0, sizeof (DummySmfeData));
2581
count = SeqMgrGetAllOverlappingFeatures (sfp->location, FEATDEF_GENE, NULL, 0,
2582
LOCATION_SUBSET, (Pointer) &dsd, SQNDummySMFEProc);
2584
if (dsd.num_at_max < 2) {
2585
last = (SeqFeatXrefPtr PNTR) &(sfp->xref);
2587
while (curr != NULL) {
2589
if (curr->data.choice == SEQFEAT_GENE) {
2592
SeqFeatXrefFree (curr);
2594
last = &(curr->next);
2462
2603
sfp = SeqMgrGetNextFeature (bsp, sfp, 0, 0, &fcontext);
3240
static void RemoveMissingFeatureXrefsCallback (SeqFeatPtr sfp, Pointer data)
3243
SeqFeatXrefPtr xref, xref_next, xref_prev = NULL;
3244
SeqFeatPtr matchsfp;
3250
for (xref = sfp->xref; xref != NULL; xref = xref_next) {
3251
xref_next = xref->next;
3252
if (xref->id.choice != 0
3253
&& (matchsfp = SeqMgrGetFeatureByFeatID (sfp->idx.entityID, NULL, NULL, xref, NULL)) == NULL) {
3254
if (xref_prev == NULL) {
3255
sfp->xref = xref->next;
3257
xref_prev->next = xref->next;
3260
xref = SeqFeatXrefFree (xref);
3268
static void RemoveMissingFeatureXrefs (IteM i)
3275
bfp = currentFormDataPtr;
3277
bfp = GetObjectExtra (i);
3279
if (bfp == NULL) return;
3280
sep = GetTopSeqEntryForEntityID (bfp->input_entityID);
3281
if (sep == NULL) return;
3284
VisitFeaturesInSep (sep, NULL, RemoveMissingFeatureXrefsCallback);
3285
ObjMgrSetDirtyFlag (bfp->input_entityID, TRUE);
3286
ObjMgrSendMsg (OM_MSG_UPDATE, bfp->input_entityID, 0, 0);
3099
3292
static void ClearPubFig (PubdescPtr pdp, Pointer userdata)
6715
6910
CheckSeqLocForPartial (location, &partial5, &partial3);
6716
6911
sfp->location = SeqLocFree (sfp->location);
6717
sfp->location = AsnIoMemCopy ((Pointer) location,
6718
(AsnReadFunc) SeqLocAsnRead,
6719
(AsnWriteFunc) SeqLocAsnWrite);
6913
sfp->location = GetmRNALocationFromCDSLocation (location, sfp->idx.entityID);
6915
sfp->location = AsnIoMemCopy ((Pointer) location,
6916
(AsnReadFunc) SeqLocAsnRead,
6917
(AsnWriteFunc) SeqLocAsnWrite);
6720
6919
sfp->partial = partial5 | partial3;
7158
7366
EnableFeatureToCDSControls (fp);
7160
7368
PushButton (c, "Cancel", StdCancelButtonProc);
7369
fp->leave_dlg_up = CheckBox (c, "Leave Dialog Up", NULL);
7163
7371
AlignObjects (ALIGN_CENTER, (HANDLE) fp->feature_choice,
7165
7373
(HANDLE) fp->qual_caps_grp,
7167
7375
(HANDLE) fp->fuse_multiple_btn,
7377
(HANDLE) fp->include_utr_btn,
7170
7380
RealizeWindow (w);
20181
20391
affil = alp->affil;
20182
20392
if (affil == NULL) continue;
20183
20393
FixCapitalizationInElement (&(affil->affil), TRUE, TRUE, FALSE);
20394
FixAffiliationShortWordsInElement (&(affil->affil));
20184
20395
FixCapitalizationInElement (&(affil->div), TRUE, TRUE, FALSE);
20396
FixAffiliationShortWordsInElement (&(affil->div));
20185
20397
FixCapitalizationInElement (&(affil->city), FALSE, TRUE, FALSE);
20398
FixAffiliationShortWordsInElement (&(affil->city));
20187
20400
/* special handling for states */
20188
20401
if (affil->sub != NULL && StringLen (affil->sub) == 2
20192
20405
affil->sub[1] = toupper(affil->sub[1]);
20194
20407
FixCapitalizationInElement (&(affil->sub), FALSE, TRUE, FALSE);
20408
FixAffiliationShortWordsInElement (&(affil->sub));
20196
20410
FixCapitalizationInElement (&(affil->country), TRUE, TRUE, FALSE);
20197
20411
FixCapitalizationInElement (&(affil->street), FALSE, TRUE, FALSE);
20412
FixAffiliationShortWordsInElement (&(affil->street));
21595
21825
SeparatorItem (s);
21596
21826
i = CommandItem (s, "BARCODE Discrepancy Tool", BarcodeTestTool);
21597
21827
SetObjectExtra (i, bfp, NULL);
21828
i = CommandItem (s, "Create BARCODE IDs", CreateBarcodeIDsFromLocalIDs);
21829
SetObjectExtra (i, bfp, NULL);
21598
21830
i = CommandItem (s, "Apply BARCODE Dbxrefs", ApplyBarcodeDbxrefs);
21599
21831
SetObjectExtra (i, bfp, NULL);
21600
21832
SeparatorItem (s);
21605
21837
SetObjectExtra (i, bfp, NULL);
21606
21838
i = CommandItem (s, "Refresh TSA Tables", RefreshTSATables);
21607
21839
SetObjectExtra (i, bfp, NULL);
21608
i = CommandItem (s, "Create TSA IDs", CreateTSAIDsFromLocalIDs);
21609
SetObjectExtra (i, bfp, NULL);
21841
x = SubMenu (s, "Create TSA IDs");
21842
i = CommandItem (x, "From Local IDs", CreateTSAIDsFromLocalIDs);
21843
SetObjectExtra (i, bfp, NULL);
21844
i = CommandItem (x, "From Table", CreateTSAIDsFromTable);
21845
SetObjectExtra (i, bfp, NULL);
21610
21847
i = CommandItem (s, "Edit TSA Assembly", EditTSAAssembly);
21611
21848
SetObjectExtra (i, bfp, NULL);
21612
21849
i = CommandItem (s, "Add mRNA sequence to deflines", AddmRNASequenceToDeflines);
21821
22061
i = CommandItem (s, "Remove Nth Seg's CDS for Each SegSet",
21822
22062
RemoveNthCDSFromSegSets_Callback);
21823
22063
SetObjectExtra (i, bfp, NULL);
22064
i = CommandItem (x, "Remove All CDD Features and Dbxrefs", CleanupCDD);
22065
SetObjectExtra (i, bfp, NULL);
21825
22066
SeparatorItem (s);
21827
22068
i = CommandItem (s, "Remove BankIt Comments", RemoveBankitComments);
21901
22142
SetObjectExtra (i, bfp, NULL);
21902
22143
i = CommandItem (y, "From All Features and BioSources", RemoveAllDbxrefs);
21903
22144
SetObjectExtra (i, bfp, NULL);
22146
y = SubMenu (x, "Feature Xrefs");
22147
i = CommandItem (y, "For Missing Features", RemoveMissingFeatureXrefs);
22148
SetObjectExtra (i, bfp, NULL);
21905
22150
SeparatorItem (s);
21906
22151
y = SubMenu (s, "Remove Titles");
21947
22192
i = CommandItem (y, "LOCUS from Parts", RemoveLocusFromParts);
21948
22193
SetObjectExtra (i, bfp, NULL);
21949
22195
SeparatorItem (s);
21952
22198
i = CommandItem (s, "Remove Empty Genome Project ID Descriptors", RemoveEmptyGenomeProjectIDs);
21953
22199
SetObjectExtra (i, bfp, NULL);
22200
i = CommandItem (s, "Remove All Genome Project IDs", RemoveGenomeProjectIDs);
22201
SetObjectExtra (i, bfp, NULL);
21956
22205
static void MakeSpecialConvertMenu (MenU m, BaseFormPtr bfp)
22155
22404
SeparatorItem (s);
22156
22405
x = SubMenu (s, "Extend Partial Features");
22157
i = CommandItem (x, "All", ExtendPartialFeatures);
22406
i = CommandItem (x, "All to Ends", ExtendPartialFeatures);
22158
22407
SetObjectExtra (i, bfp, NULL);
22159
22408
i = CommandItem (x, "With Constraint", ExtendPartialFeaturesWithConstraint);
22160
22409
SetObjectExtra (i, bfp, NULL);