~ubuntu-branches/debian/experimental/ncbi-tools6/experimental

« back to all changes in this revision

Viewing changes to demo/asn2gb.c

  • Committer: Bazaar Package Importer
  • Author(s): Aaron M. Ucko
  • Date: 2008-12-17 19:45:48 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20081217194548-s86rrujnezfxr1pv
Tags: 6.1.20081116a-2
* debian/control: per Lintian's advice, depend on ${misc:Depends} across
  the board, in case Debhelper ever populates it.
* debian/{control,rules}: split newly added large BLAST databases into a
  new ncbi-rrna-data package to keep ncbi-data to a reasonable size.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
*
30
30
* Version Creation Date:   10/21/98
31
31
*
32
 
* $Revision: 6.103 $
 
32
* $Revision: 6.117 $
33
33
*
34
34
* File Description:  New GenBank flatfile generator application
35
35
*
48
48
#include <sequtil.h>
49
49
#include <sqnutils.h>
50
50
#include <explore.h>
 
51
#include <toasn3.h>
51
52
#include <asn2gnbp.h>
52
53
 
53
 
#define ASN2GB_APP_VER "4.4"
 
54
/* asn2gnbi.h needed to test PUBSEQGetAccnVer in accpubseq.c */
 
55
#include <asn2gnbi.h>
 
56
 
 
57
#define ASN2GB_APP_VER "5.5"
54
58
 
55
59
CharPtr ASN2GB_APPLICATION = ASN2GB_APP_VER;
56
60
 
190
194
      return 1;
191
195
    }
192
196
 
193
 
    dataptr = ReadAsnFastaOrFlatFile (fp, &datatype, NULL, FALSE, FALSE, FALSE, FALSE);
 
197
    dataptr = ReadAsnFastaOrFlatFile (fp, &datatype, NULL, FALSE, FALSE, TRUE, FALSE);
194
198
 
195
199
    FileClose (fp);
196
200
 
529
533
  NULL
530
534
};
531
535
 
 
536
static void ReportDiffs (
 
537
  CharPtr path1,
 
538
  CharPtr path2,
 
539
  CharPtr path3,
 
540
  FILE* fp,
 
541
  CharPtr ffdiff,
 
542
  Boolean useFfdiff
 
543
)
 
544
 
 
545
{
 
546
  Char    buf [256];
 
547
  Char    cmmd [256];
 
548
  size_t  ct;
 
549
  FILE    *fpo;
 
550
 
 
551
  if (useFfdiff) {
 
552
    sprintf (cmmd, "%s -o %s -n %s -d reports", ffdiff, path1, path2);
 
553
    system (cmmd);
 
554
 
 
555
    sprintf (cmmd, "rm %s; rm %s", path1, path2);
 
556
    system (cmmd);
 
557
  } else {
 
558
    sprintf (cmmd, "sort %s | uniq -c > %s.suc; rm %s", path1, path1, path1);
 
559
    system (cmmd);
 
560
 
 
561
    sprintf (cmmd, "sort %s | uniq -c > %s.suc; rm %s", path2, path2, path2);
 
562
    system (cmmd);
 
563
 
 
564
    sprintf (cmmd, "diff %s.suc %s.suc > %s", path1, path2, path3);
 
565
    system (cmmd);
 
566
 
 
567
    sprintf (cmmd, "cat %s", path3);
 
568
    fpo = popen (cmmd, "r");
 
569
    if (fpo != NULL) {
 
570
      while ((ct = fread (buf, 1, sizeof (buf), fpo)) > 0) {
 
571
        fwrite (buf, 1, ct, fp);
 
572
        fflush (fp);
 
573
      }
 
574
      pclose (fpo);
 
575
    }
 
576
 
 
577
    sprintf (cmmd, "rm %s.suc; rm %s.suc", path1, path2);
 
578
    system (cmmd);
 
579
  }
 
580
}
 
581
 
532
582
static void CompareFlatFiles (
533
583
  CharPtr path1,
534
584
  CharPtr path2,
580
630
    SaveAsn2gnbk (sep, path1, format, SEQUIN_MODE, style, flags, locks, custom);
581
631
    SaveAsn2gnbk (sep, path2, format, RELEASE_MODE, style, flags, locks, custom);
582
632
 
583
 
    if (useFfdiff) {
584
 
      sprintf (cmmd, "%s -o %s -n %s -d reports", ffdiff, path1, path2);
585
 
      system (cmmd);
586
 
 
587
 
      sprintf (cmmd, "rm %s; rm %s", path1, path2);
588
 
      system (cmmd);
589
 
    } else {
590
 
      sprintf (cmmd, "sort %s | uniq -c > %s.suc; rm %s", path1, path1, path1);
591
 
      system (cmmd);
592
 
 
593
 
      sprintf (cmmd, "sort %s | uniq -c > %s.suc; rm %s", path2, path2, path2);
594
 
      system (cmmd);
595
 
 
596
 
      sprintf (cmmd, "diff %s.suc %s.suc > %s", path1, path2, path3);
597
 
      system (cmmd);
598
 
 
599
 
      sprintf (cmmd, "cat %s", path3);
600
 
      fpo = popen (cmmd, "r");
601
 
      if (fpo != NULL) {
602
 
        while ((ct = fread (buf, 1, sizeof (buf), fpo)) > 0) {
603
 
          fwrite (buf, 1, ct, fp);
604
 
          fflush (fp);
605
 
        }
606
 
        pclose (fpo);
607
 
      }
608
 
 
609
 
      sprintf (cmmd, "rm %s.suc; rm %s.suc", path1, path2);
610
 
      system (cmmd);
611
 
    }
 
633
    ReportDiffs (path1, path2, path3, fp, ffdiff, useFfdiff);
612
634
 
613
635
  } else if (batch == 3) {
614
636
 
 
637
#ifdef ASN2GNBK_SUPPRESS_UNPUB_AFFIL
 
638
    VisitPubdescsInSep (sep, NULL, FreeUnpubAffil);
 
639
#endif
 
640
 
615
641
    SaveAsn2gnbk (sep, path1, format, mode, style, flags, locks, custom);
616
 
 
617
 
    aip = AsnIoOpen (path3, "w");
618
 
    if (aip == NULL) return;
619
 
 
620
 
    SeqEntryAsnWrite (sep, aip, NULL);
621
 
    AsnIoClose (aip);
622
 
 
623
 
    fsep = FindNthBioseq (sep, 1);
624
 
    if (fsep == NULL || fsep->choice != 1) return;
625
 
    bsp = (BioseqPtr) fsep->data.ptrvalue;
626
 
    if (bsp == NULL) return;
627
 
    SeqIdWrite (bsp->id, buf, PRINTID_FASTA_LONG, sizeof (buf));
628
 
 
629
 
    arguments [0] = '\0';
630
 
    sprintf (arguments, "-format %s -mode %s -style %s -view %s",
631
 
             fffmt [(int) format], ffmod [(int) mode], ffstl [(int) style], ffvew [(int) format]);
632
 
 
633
 
    sprintf (cmmd, "%s %s -i %s -o %s", asn2flat, arguments, path3, path2);
634
 
    system (cmmd);
635
 
 
636
 
    if (useFfdiff) {
637
 
      sprintf (cmmd, "%s -o %s -n %s -d reports", ffdiff, path1, path2);
638
 
      system (cmmd);
639
 
 
640
 
      sprintf (cmmd, "rm %s; rm %s", path1, path2);
641
 
      system (cmmd);
642
 
    } else {
643
 
      sprintf (cmmd, "sort %s | uniq -c > %s.suc; rm %s", path1, path1, path1);
644
 
      system (cmmd);
645
 
 
646
 
      sprintf (cmmd, "sort %s | uniq -c > %s.suc; rm %s", path2, path2, path2);
647
 
      system (cmmd);
648
 
 
649
 
      sprintf (cmmd, "diff %s.suc %s.suc > %s", path1, path2, path3);
650
 
      system (cmmd);
651
 
 
652
 
      sprintf (cmmd, "cat %s", path3);
653
 
      fpo = popen (cmmd, "r");
654
 
      if (fpo != NULL) {
655
 
        while ((ct = fread (buf, 1, sizeof (buf), fpo)) > 0) {
656
 
          fwrite (buf, 1, ct, fp);
657
 
          fflush (fp);
658
 
        }
659
 
        pclose (fpo);
660
 
      }
661
 
 
662
 
      sprintf (cmmd, "rm %s.suc; rm %s.suc", path1, path2);
663
 
      system (cmmd);
664
 
    }
 
642
    SeriousSeqEntryCleanupBulk (sep);
 
643
    SaveAsn2gnbk (sep, path2, format, mode, style, flags, locks, custom);
 
644
 
 
645
    ReportDiffs (path1, path2, path3, fp, ffdiff, useFfdiff);
665
646
 
666
647
  } else if (batch == 4) {
667
648
 
691
672
    sprintf (cmmd, "%s %s -i %s -o %s", asn2flat, arguments, path3, path2);
692
673
    system (cmmd);
693
674
 
694
 
    if (useFfdiff) {
695
 
      sprintf (cmmd, "%s -o %s -n %s -d reports", ffdiff, path1, path2);
696
 
      system (cmmd);
697
 
 
698
 
      sprintf (cmmd, "rm %s; rm %s", path1, path2);
699
 
      system (cmmd);
700
 
    } else {
701
 
      sprintf (cmmd, "sort %s | uniq -c > %s.suc; rm %s", path1, path1, path1);
702
 
      system (cmmd);
703
 
 
704
 
      sprintf (cmmd, "sort %s | uniq -c > %s.suc; rm %s", path2, path2, path2);
705
 
      system (cmmd);
706
 
 
707
 
      sprintf (cmmd, "diff %s.suc %s.suc > %s", path1, path2, path3);
708
 
      system (cmmd);
709
 
 
710
 
      sprintf (cmmd, "cat %s", path3);
711
 
      fpo = popen (cmmd, "r");
712
 
      if (fpo != NULL) {
713
 
        while ((ct = fread (buf, 1, sizeof (buf), fpo)) > 0) {
714
 
          fwrite (buf, 1, ct, fp);
715
 
          fflush (fp);
716
 
        }
717
 
        pclose (fpo);
718
 
      }
719
 
 
720
 
      sprintf (cmmd, "rm %s.suc; rm %s.suc", path1, path2);
721
 
      system (cmmd);
722
 
    }
 
675
    ReportDiffs (path1, path2, path3, fp, ffdiff, useFfdiff);
723
676
 
724
677
  } else if (batch == 5) {
725
678
 
 
679
    SaveAsn2gnbk (sep, path1, format, mode, style, flags, locks, custom);
 
680
 
 
681
    aip = AsnIoOpen (path3, "w");
 
682
    if (aip == NULL) return;
 
683
 
 
684
    SeqEntryAsnWrite (sep, aip, NULL);
 
685
    AsnIoClose (aip);
 
686
 
 
687
    fsep = FindNthBioseq (sep, 1);
 
688
    if (fsep == NULL || fsep->choice != 1) return;
 
689
    bsp = (BioseqPtr) fsep->data.ptrvalue;
 
690
    if (bsp == NULL) return;
 
691
    SeqIdWrite (bsp->id, buf, PRINTID_FASTA_LONG, sizeof (buf));
 
692
 
 
693
    arguments [0] = '\0';
 
694
    sprintf (arguments, "-format %s -mode %s -style %s -view %s",
 
695
             fffmt [(int) format], ffmod [(int) mode], ffstl [(int) style], ffvew [(int) format]);
 
696
 
 
697
    sprintf (cmmd, "%s %s -i %s -o %s", asn2flat, arguments, path3, path2);
 
698
    system (cmmd);
 
699
 
 
700
    ReportDiffs (path1, path2, path3, fp, ffdiff, useFfdiff);
 
701
 
 
702
  } else if (batch == 6) {
 
703
 
726
704
    aip = AsnIoOpen (path3, "w");
727
705
    if (aip == NULL) return;
728
706
 
974
952
    return 1;
975
953
  }
976
954
 
977
 
  if ((batch == 1 || batch == 3 || batch == 4 || batch == 5 || format != GENBANK_FMT) && extra == NULL) {
 
955
  if ((batch == 1 || batch == 4 || batch == 5 || format != GENBANK_FMT) && extra == NULL) {
978
956
    ofp = FileOpen (outputFile, "w");
979
957
    if (ofp == NULL) {
980
958
      AsnIoClose (aip);
1064
1042
          if (batch != 1) {
1065
1043
            printf ("%s\n", buf);
1066
1044
            fflush (stdout);
1067
 
            if (batch != 3 && batch != 4 && batch != 5) {
 
1045
            if (batch != 4 && batch != 5) {
1068
1046
              if (ofp != NULL) {
1069
1047
                fprintf (ofp, "%s\n", buf);
1070
1048
                fflush (ofp);
1282
1260
 
1283
1261
  TrimSpacesAroundString (accn);
1284
1262
 
 
1263
#ifdef INTERNAL_NCBI_ASN2GB
 
1264
  /* temporary code to test PUBSEQGetAccnVer in accpubseq.c */
 
1265
 
 
1266
  if (*accn == '*') {
 
1267
    Char buf [64];
 
1268
    accn++;
 
1269
    if (sscanf (accn, "%ld", &val) == 1) {
 
1270
      uid = (Int4) val;
 
1271
      if (GetAccnVerFromServer (uid, buf)) {
 
1272
        Message (MSG_POST, "GetAccnVerFromServer returned %s", buf);
 
1273
      } else {
 
1274
        Message (MSG_POST, "GetAccnVerFromServer failed");
 
1275
      }
 
1276
    }
 
1277
    return NULL;
 
1278
  }
 
1279
#endif
 
1280
 
1285
1281
  alldigits = TRUE;
1286
1282
  ptr = accn;
1287
1283
  ch = *ptr;
1368
1364
    FALSE, 'h', ARG_INT, 0.0, 0, NULL},
1369
1365
  {"Custom Flags (4 HideFeats, 1792 HideRefs, 8192 HideSources, 262144 HideTranslation)", "0", NULL, NULL,
1370
1366
    FALSE, 'u', ARG_INT, 0.0, 0, NULL},
1371
 
  {"ASN.1 Type (a Any, e Seq-entry, b Bioseq, s Bioseq-set, m Seq-submit, t Batch Bioseq-set, u Batch Seq-submit)", "a", NULL, NULL,
 
1367
  {"ASN.1 Type\n"
 
1368
   "      Single Record: a Any, e Seq-entry, b Bioseq, s Bioseq-set, m Seq-submit\n"
 
1369
   "      Release File: t Batch Bioseq-set, u Batch Seq-submit\n", "a", NULL, NULL,
1372
1370
    TRUE, 'a', ARG_STRING, 0.0, 0, NULL},
1373
 
  {"Batch (1 Report, 2 Sequin/Release, 3 asn2gb/asn2flat, 4 asn2flat BSEC/nocleanup, 5 oldasn2gb/newasn2gb)", "0", "0", "5",
 
1371
  {"Batch\n"
 
1372
   "      1 Report\n"
 
1373
   "      2 Sequin/Release\n"
 
1374
   "      3 asn2gb SSEC/nocleanup\n"
 
1375
   "      4 asn2flat BSEC/nocleanup\n"
 
1376
   "      5 asn2gb/asn2flat\n"
 
1377
   "      6 oldasn2gb/newasn2gb)", "0", "0", "5",
1374
1378
    FALSE, 't', ARG_INT, 0.0, 0, NULL},
1375
1379
  {"Input File is Binary", "F", NULL, NULL,
1376
1380
    TRUE, 'b', ARG_BOOLEAN, 0.0, 0, NULL},
1534
1538
    do_gbseq = TRUE;
1535
1539
    format = GENPEPT_FMT;
1536
1540
 
 
1541
  } else if (StringICmp (str, "xz") == 0 || StringICmp (str, "zx") == 0) {
 
1542
    do_gbseq = TRUE;
 
1543
    do_insdseq = TRUE;
 
1544
    format = GENBANK_FMT;
 
1545
    altformat = GENPEPT_FMT;
 
1546
 
1537
1547
  } else if (StringICmp (str, "x") == 0) {
1538
1548
    do_gbseq = TRUE;
1539
1549
    do_insdseq = TRUE;