74
74
NLM_EXTERN Char link_seq [MAX_WWWBUF];
75
75
#define DEF_LINK_SEQ "http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?"
77
NLM_EXTERN Char link_projid [MAX_WWWBUF];
78
#define DEF_LINK_PROJID "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=genomeprj&cmd=Retrieve&dopt=Overview&list_uids="
77
80
NLM_EXTERN Char link_wgs [MAX_WWWBUF];
78
81
#define DEF_LINK_WGS "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?"
204
207
#define DEF_LINK_GABI "https://gabi.rzpd.de/cgi-bin-protected/GreenCards.pl.cgi?Mode=ShowBioObject&BioObjectName="
206
209
static Char link_fantom [MAX_WWWBUF];
207
#define DEF_LINK_FANTOM "http://fantom.gsc.riken.go.jp/db/view/main.cgi?masterid="
210
#define DEF_LINK_FANTOM "http://fantom.gsc.riken.jp/db/annotate/main.cgi?masterid="
209
212
static Char link_interpro [MAX_WWWBUF];
210
213
#define DEF_LINK_INTERPRO "http://www.ebi.ac.uk/interpro/ISearch?mode=ipr&query="
213
216
#define DEF_LINK_GENEDB "http://www.genedb.org/genedb/Dispatcher?formType=navBar&submit=Search+for&organism=All%3Apombe%3Acerevisiae%3Adicty%3Aasp%3Atryp%3Aleish%3Amalaria%3Astyphi%3Aglossina&desc=yes&ohmr=%2F&name="
215
218
static Char link_geneid [MAX_WWWBUF];
216
#define DEF_LINK_GENEID "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=retrieve&dopt=graphics&list_uids="
219
#define DEF_LINK_GENEID "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&cmd=Retrieve&dopt=full_report&list_uids="
218
221
static Char link_zfin [MAX_WWWBUF];
219
222
#define DEF_LINK_ZFIN "http://zfin.org/cgi-bin/webdriver?MIval=aa-markerview.apg&OID="
278
281
static Char link_uspto [MAX_WWWBUF];
279
282
#define DEF_LINK_USPTO "http://patft.uspto.gov/netacgi/nph-Parser?patentnumber="
284
static Char link_vector [MAX_WWWBUF];
285
#define DEF_LINK_VECTOR "http://www.vectorbase.org/Genome/BRCGene/?"
287
static Char link_mirbase [MAX_WWWBUF];
288
#define DEF_LINK_MIRBASE "http://microrna.sanger.ac.uk/cgi-bin/sequences/mirna_entry.pl?acc="
282
291
/* www utility functions */
296
305
GetAppParam ("NCBI", "WWWENTREZ", "LINK_FEAT", DEF_LINK_FEAT, link_feat, MAX_WWWBUF);
297
306
GetAppParam ("NCBI", "WWWENTREZ", "LINK_FEATC", DEF_LINK_FEATC, link_featc, MAX_WWWBUF);
298
307
GetAppParam ("NCBI", "WWWENTREZ", "LINK_SEQ", DEF_LINK_SEQ, link_seq, MAX_WWWBUF);
308
GetAppParam ("NCBI", "WWWENTREZ", "LINK_PROJID", DEF_LINK_PROJID, link_projid, MAX_WWWBUF);
299
309
GetAppParam ("NCBI", "WWWENTREZ", "LINK_WGS", DEF_LINK_WGS, link_wgs, MAX_WWWBUF);
300
310
GetAppParam ("NCBI", "WWWENTREZ", "LINK_OMIM", DEF_LINK_OMIM, link_omim, MAX_WWWBUF);
301
311
GetAppParam ("NCBI", "WWWENTREZ", "LINK_REF", DEF_LINK_REF, ref_link, MAX_WWWBUF);
306
316
GetAppParam ("NCBI", "WWWENTREZ", "LINK_ECAMBIG", DEF_LINK_ECAMBIG, ec_ambig, MAX_WWWBUF);
307
317
GetAppParam ("NCBI", "WWWENTREZ", "LINK_FF", DEF_LINK_FF, link_ff, MAX_WWWBUF);
308
318
GetAppParam ("NCBI", "WWWENTREZ", "LINK_MUID", DEF_LINK_MUID, link_muid, MAX_WWWBUF);
309
GetAppParam ("NCBI", "WWWENTREZ", "LINK_FF", DEF_LINK_FF, link_ff, MAX_WWWBUF);
310
GetAppParam ("NCBI", "WWWENTREZ", "LINK_MUID", DEF_LINK_MUID, link_muid, MAX_WWWBUF);
311
319
GetAppParam ("NCBI", "WWWENTREZ", "LINK_ACE", DEF_LINK_ACE, link_ace, MAX_WWWBUF);
312
320
GetAppParam ("NCBI", "WWWENTREZ", "LINK_TAX", DEF_LINK_TAX, link_tax, MAX_WWWBUF);
313
321
GetAppParam ("NCBI", "WWWENTREZ", "LINK_CODE", DEF_LINK_CODE, link_code, MAX_WWWBUF);
367
375
GetAppParam ("NCBI", "WWWENTREZ", "LINK_BOLD", DEF_LINK_BOLD, link_bold, MAX_WWWBUF);
368
376
GetAppParam ("NCBI", "WWWENTREZ", "LINK_HPRD", DEF_LINK_HPRD, link_hprd, MAX_WWWBUF);
369
377
GetAppParam ("NCBI", "WWWENTREZ", "LINK_USPTO", DEF_LINK_USPTO, link_uspto, MAX_WWWBUF);
378
GetAppParam ("NCBI", "WWWENTREZ", "LINK_VECTOR", DEF_LINK_VECTOR, link_vector, MAX_WWWBUF);
379
GetAppParam ("NCBI", "WWWENTREZ", "LINK_MIRBASE", DEF_LINK_MIRBASE, link_mirbase, MAX_WWWBUF);
666
676
FF_www_db_xref_std (ffstring, db, identifier, link);
679
static void FF_www_db_xref_vector (
680
StringItemPtr ffstring,
688
Char buf [512], tax [256];
691
StringCpy (buf, link);
693
if (BioseqToGeneticCode (bsp, NULL, NULL, NULL, tax, sizeof (tax), NULL)) {
697
if (IS_WHITESP (ch)) {
703
StringCat (buf, "org=");
704
StringCat (buf, tax);
705
StringCat (buf, "&");
708
StringCat (buf, "gene=");
709
FF_www_db_xref_std (ffstring, db, identifier, buf);
669
712
static void FF_www_db_xref_null (
670
713
StringItemPtr ffstring,
809
854
FF_www_db_xref_null(ffstring, db, identifier, link_bold);
810
855
} else if ( StringCmp(db , "HPRD") == 0) {
811
856
FF_www_db_xref_hprd(ffstring, db, identifier, link_hprd);
857
} else if ( StringCmp(db , "VectorBase") == 0) {
858
FF_www_db_xref_vector(ffstring, db, identifier, bsp, link_vector);
859
} else if ( StringCmp(db , "miRBase") == 0) {
860
FF_www_db_xref_std(ffstring, db, identifier, link_mirbase);
814
863
/* default: no link just the text */
819
868
NLM_EXTERN void FF_www_db_xref(
820
869
IntAsn2gbJobPtr ajp,
821
870
StringItemPtr ffstring,
822
CharPtr db, CharPtr identifier
825
876
if ( ffstring == NULL || db == NULL || identifier == NULL ) return;
827
878
if ( GetWWW(ajp) ) {
828
Do_www_db_xref (ajp, ffstring, db, identifier);
879
Do_www_db_xref (ajp, ffstring, db, identifier, bsp);
829
880
} else { /* not in www mode */
830
881
if (StringCmp(db , "MGD") == 0 || StringCmp(db , "MGI") == 0) {
831
882
if (StringNICmp (identifier, "MGI:", 4) == 0) {
1150
1204
for (vnp = conslist; vnp != NULL; vnp = vnp->next) {
1152
1206
pid = (PersonIdPtr) vnp->data.ptrvalue;
1153
1207
if (pid->choice == 5) {
1154
str = MakeSingleAuthorString (format, NULL, (CharPtr) pid->data, NULL, NULL, index, NULL);
1155
if ((! StringHasNoText (str)) && consortP != NULL && *consortP == NULL) {
1156
*consortP = StringSave (str);
1159
/* optionally populate gbseq for XML-ized GenBank format */
1161
if (gbref != NULL) {
1162
gbref->consortium = StringSave (str);
1165
str = MemFree (str);
1208
str = MakeSingleAuthorString (format, prefix, (CharPtr) pid->data, NULL, NULL, index, NULL);
1210
ValNodeAddStr (&clist, 0, str);
1215
if (clist != NULL) {
1216
str = MergeFFValNodeStrs (clist);
1217
if ((! StringHasNoText (str)) && consortP != NULL && *consortP == NULL) {
1218
*consortP = StringSave (str);
1221
/* optionally populate gbseq for XML-ized GenBank format */
1223
if (gbref != NULL) {
1224
gbref->consortium = StringSave (str);
1227
str = MemFree (str);
1228
ValNodeFreeData (clist);
1169
1231
ValNodeFree (pidlist);
2528
2593
if (cpp == NULL) return NULL;
2595
if (StringHasNoText (cpp->number) &&
2596
StringDoesHaveText (cpp->app_number) &&
2597
StringCmp (cpp->country, "US") == 0 &&
2598
mode != RELEASE_MODE) {
2599
for (sip = seqidp; sip != NULL; sip = sip->next) {
2600
if (sip->choice != SEQID_PATENT) continue;
2601
psip = (PatentSeqIdPtr) sip->data.ptrvalue;
2602
if (psip == NULL) continue;
2604
if (cit == NULL) continue;
2605
if (StringDoesHaveText (cit->app_number)) {
2606
is_us_pre_grant = TRUE;
2530
2611
if (format == GENBANK_FMT || format == GENPEPT_FMT) {
2531
ValNodeCopyStr (&head, 0, "Patent: ");
2612
if (is_us_pre_grant) {
2613
ValNodeCopyStr (&head, 0, "Pre-Grant Patent: ");
2616
ValNodeCopyStr (&head, 0, "Patent: ");
2533
2619
} else if (format == EMBL_FMT || format == EMBLPEPT_FMT) {
2534
2620
ValNodeCopyStr (&head, 0, "Patent number ");
2550
2636
ValNodeCopyStr (&head, 0, cpp->number);
2552
2638
} else if (! StringHasNoText (cpp->app_number)) {
2553
AddValNodeString (&head, "(", cpp->app_number, ")");
2639
if (is_us_pre_grant) {
2640
AddValNodeString (&head, NULL, cpp->app_number, NULL);
2642
AddValNodeString (&head, "(", cpp->app_number, ")");
2556
2646
if (! StringHasNoText (cpp->doc_type)) {
2996
3087
case PUB_Patent :
2997
3088
cpp = (CitPatPtr) vnp->data.ptrvalue;
2998
3089
if (cpp != NULL) {
2999
journal = FormatCitPat (format, cpp, seqidp, ajp);
3090
journal = FormatCitPat (format, mode, cpp, seqidp, ajp);
3267
3374
Asn2gnbkCompressSpaces (gbref->journal);
3269
3376
MemFree (copy);
3378
if (rbp->sites == 1 || rbp->sites == 2) {
3379
gbref->position = StringSave ("sites");
3380
} else if (rbp->sites == 3) {
3382
irp = (IntRefBlockPtr) rbp;
3385
slp = SeqLocFindNext (loc, NULL);
3386
while (slp != NULL) {
3387
start = SeqLocStart (slp) + 1;
3388
stop = SeqLocStop (slp) + 1;
3390
sprintf (buf, "%ld..%ld", (long) start, (long) stop);
3392
sprintf (buf, "; %ld..%ld", (long) start, (long) stop);
3394
ValNodeCopyStr (&head, 0, buf);
3395
slp = SeqLocFindNext (loc, slp);
3397
tmp = MergeFFValNodeStrs (head);
3398
ValNodeFreeData (head);
3399
gbref->position = tmp;
3403
sprintf (buf, "%ld..%ld", (long) start, (long) stop);
3404
gbref->position = StringSave (buf);
3272
3409
static Boolean IsCitSub (
3599
3738
/* print author list */
3601
FFRecycleString(ajp, temp);
3602
temp = FFGetString(ajp);
3603
FFStartPrint(temp, afp->format, 2, 12, "AUTHORS", 12, 5, 5, "RA", FALSE);
3606
3741
consortium = NULL;
3611
3746
TrimSpacesAroundString (str);
3614
if (afp->format == GENBANK_FMT || afp->format == GENPEPT_FMT) {
3616
trailingPeriod = TRUE;
3617
} else if (afp->format == EMBL_FMT || afp->format == EMBLPEPT_FMT) {
3618
trailingPeriod = FALSE;
3619
len = StringLen (str);
3620
if (len > 0 && str [len - 1] != '.') {
3749
if (str != NULL || StringHasNoText (consortium)) {
3750
FFRecycleString(ajp, temp);
3751
temp = FFGetString(ajp);
3752
FFStartPrint(temp, afp->format, 2, 12, "AUTHORS", 12, 5, 5, "RA", FALSE);
3627
/* if no authors were found, period will still be added by this call */
3629
FFAddTextToString(temp, NULL, str, suffix, trailingPeriod, FALSE, TILDE_TO_SPACES);
3631
3754
if (afp->format == GENBANK_FMT || afp->format == GENPEPT_FMT) {
3632
FFAddOneChar(temp, '.', FALSE);
3756
trailingPeriod = TRUE;
3633
3757
} else if (afp->format == EMBL_FMT || afp->format == EMBLPEPT_FMT) {
3634
FFAddOneChar(temp, ';', FALSE);
3639
if (afp->format == GENBANK_FMT || afp->format == GENPEPT_FMT) {
3758
trailingPeriod = FALSE;
3759
len = StringLen (str);
3760
if (len > 0 && str [len - 1] != '.') {
3767
/* if no authors were found, period will still be added by this call */
3769
FFAddTextToString(temp, NULL, str, suffix, trailingPeriod, FALSE, TILDE_TO_SPACES);
3770
} else if (StringHasNoText (consortium)) {
3771
if (afp->format == GENBANK_FMT || afp->format == GENPEPT_FMT) {
3772
FFAddOneChar(temp, '.', FALSE);
3773
} else if (afp->format == EMBL_FMT || afp->format == EMBLPEPT_FMT) {
3774
FFAddOneChar(temp, ';', FALSE);
3778
if (afp->format == GENBANK_FMT || afp->format == GENPEPT_FMT) {
3640
3779
FFLineWrap(ffstring, temp, 12, 12, ASN2FF_GB_MAX, NULL);
3642
3781
FFLineWrap(ffstring, temp, 5, 5, ASN2FF_EMBL_MAX, "RA");
3645
3786
/* print consortium */
3730
3871
citArtIsoJta = FALSE;
3733
str = GetPubJournal (afp->format, ajp->flags.dropBadCitGens,
3734
ajp->flags.noAffilOnUnpub, citArtIsoJta,
3735
pdp, csp, bsp->id, index, ajp);
3874
str = GetPubJournal (afp->format, ajp->mode, ajp->flags.dropBadCitGens,
3875
ajp->flags.noAffilOnUnpub, citArtIsoJta, pdp, csp,
3876
bsp->id, index, ajp);
3736
3877
if (str == NULL) {
3737
3878
str = StringSave ("Unpublished");
3858
3998
FFRecycleString(ajp, temp);
3859
3999
temp = FFGetString(ajp);
4001
if (remprefix != NULL) {
4002
ValNodeCopyStr (&remarks, 0, remprefix);
4004
ValNodeCopyStr (&remarks, 0, pdp->comment);
3861
4006
FFStartPrint (temp, afp->format, 2, 12, prefix, 12, 5, 5, NULL, FALSE);
3862
4007
FFAddOneString (temp, pdp->comment, FALSE, TRUE, TILDE_EXPAND);
3863
4008
/* AddCommentWithURLlinks(ajp, temp, NULL, pdp->comment, NULL); */
3890
4037
temp = FFGetString(ajp);
3892
4039
sprintf (buf, "GenBank staff at the National Library of Medicine created this entry [NCBI gibbsq %ld] from the original journal article.", (long) gibbsq);
4040
if (remprefix != NULL) {
4041
ValNodeCopyStr (&remarks, 0, remprefix);
4043
ValNodeCopyStr (&remarks, 0, buf);
3893
4045
FFStartPrint (temp, afp->format, 2, 12, prefix, 12, 5, 5, NULL, FALSE);
3894
4046
FFAddOneString (temp, buf, FALSE, FALSE, TILDE_EXPAND);
3895
4047
FFLineWrap(ffstring, temp, 12, 12, ASN2FF_GB_MAX, NULL);
3906
4058
temp = FFGetString(ajp);
3908
4060
sprintf (buf, "This sequence comes from %s", str);
4061
if (remprefix != NULL) {
4062
ValNodeCopyStr (&remarks, 0, remprefix);
4064
ValNodeCopyStr (&remarks, 0, buf);
3909
4066
FFStartPrint (temp, afp->format, 2, 12, prefix, 12, 5, 5, NULL, FALSE);
3910
4067
FFAddOneString (temp, buf, TRUE, TRUE, TILDE_EXPAND);
3911
4068
FFLineWrap(ffstring, temp, 12, 12, ASN2FF_GB_MAX, NULL);
3916
4073
FFRecycleString(ajp, temp);
3917
4074
temp = FFGetString(ajp);
3919
FFStartPrint (temp ,afp->format, 2, 12, prefix, 12, 5, 5, NULL, FALSE);
4076
if (remprefix != NULL) {
4077
ValNodeCopyStr (&remarks, 0, remprefix);
4079
ValNodeCopyStr (&remarks, 0, "Polyadenylate residues occurring in the figure were omitted from the sequence.");
4081
FFStartPrint (temp, afp->format, 2, 12, prefix, 12, 5, 5, NULL, FALSE);
3920
4082
FFAddOneString (temp, "Polyadenylate residues occurring in the figure were omitted from the sequence.", TRUE, TRUE, TILDE_EXPAND);
3921
4083
FFLineWrap(ffstring, temp, 12, 12, ASN2FF_GB_MAX, NULL);
3931
4093
temp = FFGetString(ajp);
3933
4095
sprintf (buf, "Map location: %s", str);
4096
if (remprefix != NULL) {
4097
ValNodeCopyStr (&remarks, 0, remprefix);
4099
ValNodeCopyStr (&remarks, 0, buf);
3934
4101
FFStartPrint (temp, afp->format, 2, 12, prefix, 12, 5, 5, NULL, FALSE);
3935
4102
FFAddOneString (temp, buf, TRUE, TRUE, TILDE_EXPAND);
3936
4103
FFLineWrap(ffstring, temp, 12, 12, ASN2FF_GB_MAX, NULL);
3952
4119
FFRecycleString(ajp, temp);
3953
4120
temp = FFGetString(ajp);
4122
len = StringLen (crp->exp) + 20;
4123
str = MemNew (sizeof (Char) * len);
4125
sprintf (str, "Erratum:[%s]", crp->exp);
4126
if (remprefix != NULL) {
4127
ValNodeCopyStr (&remarks, 0, remprefix);
4129
ValNodeCopyStr (&remarks, 0, str);
4131
str = MemFree (str);
3955
4133
FFStartPrint (temp, afp->format, 2, 12, prefix, 12, 5, 5, NULL, FALSE);
3956
4134
FFAddOneString (temp, "Erratum:", FALSE, FALSE, TILDE_TO_SPACES);
3957
4135
FFAddTextToString (temp, "[", crp->exp, "]", FALSE, TRUE, TILDE_EXPAND);
3968
4146
FFRecycleString(ajp, temp);
3969
4147
temp = FFGetString(ajp);
4149
if (remprefix != NULL) {
4150
ValNodeCopyStr (&remarks, 0, remprefix);
4152
ValNodeCopyStr (&remarks, 0, csp->descr);
3971
4154
FFStartPrint (temp, afp->format, 2, 12, prefix, 12, 5, 5, NULL, FALSE);
3972
4155
/* FFAddOneString (temp, csp->descr, FALSE, TRUE, TILDE_EXPAND); */
3973
4156
AddCommentWithURLlinks(ajp, temp, NULL, csp->descr, NULL);
3985
4168
if (gbseq != NULL) {
3986
4169
if (gbref != NULL) {
3987
AddReferenceToGbseq (gbseq, gbref, str);
4170
if (remarks != NULL) {
4171
gbref->remark = MergeFFValNodeStrs (remarks);
4174
AddReferenceToGbseq (gbseq, gbref, str, rbp, bsp);
4177
ValNodeFreeData (remarks);
3991
4179
FFRecycleString(ajp, ffstring);
3992
4180
FFRecycleString(ajp, temp);