4898794edd81be5285ea6e544acbedeaeb31bf78 max Tue Nov 23 08:10:57 2021 -0800 Fixing pointers to README file for license in all source code files. refs #27614 diff --git src/hg/makeDb/hgFakeAgp/hgFakeAgp.c src/hg/makeDb/hgFakeAgp/hgFakeAgp.c index 278abf0..1c4f8ee 100644 --- src/hg/makeDb/hgFakeAgp/hgFakeAgp.c +++ src/hg/makeDb/hgFakeAgp/hgFakeAgp.c @@ -1,156 +1,156 @@ /* hgFakeAgp - Create fake AGP file by looking at N's. */ /* Copyright (C) 2011 The Regents of the University of California - * See README in this or parent directory for licensing information. */ + * See kent/LICENSE or http://genome.ucsc.edu/license/ for licensing information. */ #include "common.h" #include "linefile.h" #include "hash.h" #include "options.h" #include "dnaseq.h" #include "fa.h" static int minContigGap = 25; static int minScaffoldGap = 50000; static boolean singleContigs = FALSE; static void usage() /* Explain usage and exit. */ { errAbort( "hgFakeAgp - Create fake AGP file by looking at N's\n" "usage:\n" " hgFakeAgp input.fa output.agp\n" "options:\n" " -minContigGap=N Minimum size for a gap between contigs. Default %d\n" " -minScaffoldGap=N Min size for a gap between scaffolds. Default %d\n" " -singleContigs - when a full sequence has no gaps, maintain contig\n" "\tname without adding index extension.\n" , minContigGap, minScaffoldGap ); } static struct optionSpec options[] = { {"minContigGap", OPTION_INT}, {"minScaffoldGap", OPTION_INT}, {"singleContigs", OPTION_BOOLEAN}, {NULL, 0}, }; static void agpContigLine(FILE *f, char *name, int seqStart, int seqEnd, int lineIx, int contigIx, boolean noIx) /* Output AGP line for contig. */ { fprintf(f, "%s\t", name); fprintf(f, "%d\t", seqStart + 1); fprintf(f, "%d\t", seqEnd); fprintf(f, "%d\t", lineIx); fprintf(f, "%c\t", 'D'); if (noIx) fprintf(f, "%s\t", name); else fprintf(f, "%s_%d\t", name, contigIx); fprintf(f, "1\t"); fprintf(f, "%d\t", seqEnd - seqStart); fprintf(f, "+\n"); } static char *strNotChar(char *s, char c) /* Return pointer to first character in s that is *not* c, or NULL * if none such. */ { char x; for (;;) { x = *s; if (x == 0) return NULL; if (x != c) return s; ++s; } } static void agpGapLine(FILE *f, char *name, int seqStart, int seqEnd, int gapSize, int lineIx) /* Write out agp line for gap. */ { fprintf(f, "%s\t", name); fprintf(f, "%d\t", seqStart + 1); fprintf(f, "%d\t", seqEnd); fprintf(f, "%d\t", lineIx); fprintf(f, "%c\t", 'N'); fprintf(f, "%d\t", gapSize); if (gapSize >= minScaffoldGap) fprintf(f, "scaffold\tno\n"); else fprintf(f, "contig\tyes\n"); } static void fakeAgpFromSeq(struct dnaSeq *seq, FILE *f) /* Look through sequence and produce agp file. */ { static int lineIx = 0; int contigIx = 0; char *gapStart, *gapEnd, *contigStart; char *dna, *seqStart, *seqEnd; int gapSize; boolean maintainNames = singleContigs; dna = seqStart = contigStart = seq->dna; seqEnd = seqStart + seq->size; for (;;) { gapStart = strchr(dna, 'n'); if (gapStart == NULL) { agpContigLine(f, seq->name, contigStart - seqStart, seqEnd - seqStart, ++lineIx, ++contigIx, maintainNames); break; } maintainNames = FALSE; gapEnd = strNotChar(gapStart, 'n'); if (gapEnd == NULL) gapEnd = seqEnd; gapSize = gapEnd - gapStart; if (gapSize >= minContigGap || gapEnd == seqEnd) { if (gapStart != contigStart) agpContigLine(f, seq->name, contigStart - seqStart, gapStart - seqStart, ++lineIx, ++contigIx, FALSE); agpGapLine(f, seq->name, gapStart - seqStart, gapEnd - seqStart, gapSize, ++lineIx); if (gapEnd == seqEnd) break; contigStart = gapEnd; } dna = gapEnd; } } void hgFakeAgp(char *faIn, char *agpOut) /* hgFakeAgp - Create fake AGP file by looking at N's. */ { struct lineFile *lf = lineFileOpen(faIn, TRUE); FILE *f = mustOpen(agpOut, "w"); struct dnaSeq seq; while (faSpeedReadNext(lf, &seq.dna, &seq.size, &seq.name)) { fakeAgpFromSeq(&seq, f); } carefulClose(&f); lineFileClose(&lf); } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc != 3) usage(); minContigGap = optionInt("minContigGap", minContigGap); minScaffoldGap = optionInt("minScaffoldGap", minScaffoldGap); singleContigs = optionExists("singleContigs"); hgFakeAgp(argv[1], argv[2]); return 0; }