e70152e44cc66cc599ff6b699eb8adc07f3e656a kent Sat May 24 21:09:34 2014 -0700 Adding Copyright NNNN Regents of the University of California to all files I believe with reasonable certainty were developed under UCSC employ or as part of Genome Browser copyright assignment. diff --git src/utils/wigTestMaker/wigTestMaker.c src/utils/wigTestMaker/wigTestMaker.c index 659c394..ecbeb8d 100644 --- src/utils/wigTestMaker/wigTestMaker.c +++ src/utils/wigTestMaker/wigTestMaker.c @@ -1,246 +1,249 @@ /* wigTestMaker - Create test wig files.. */ + +/* Copyright (C) 2011 The Regents of the University of California + * See README in this or parent directory for licensing information. */ #include "common.h" #include "linefile.h" #include "hash.h" #include "options.h" #include "portable.h" void usage() /* Explain usage and exit. */ { errAbort( "wigTestMaker - Create test wig files.\n" "usage:\n" " wigTestMaker outDir\n" "options:\n" " -xxx=XXX\n" ); } static struct optionSpec options[] = { {NULL, 0}, }; void makeEmpty(char *fileName) /* Make an empty file. */ { FILE *f = mustOpen(fileName, "w"); carefulClose(&f); } void makeEmptyFixed(char *fileName) /* Make short fixed step test. */ { FILE *f = mustOpen(fileName, "w"); fprintf(f, "fixedStep chrom=chr1 span=10 start=100 step=10\n"); carefulClose(&f); } void makeShortFixed(char *fileName) /* Make short fixed step test. */ { FILE *f = mustOpen(fileName, "w"); fprintf(f, "fixedStep chrom=chr1 span=10 start=100 step=10\n"); fprintf(f, "1.0\n"); carefulClose(&f); } void makeEmptyVar(char *fileName) /* Make short fixed step test. */ { FILE *f = mustOpen(fileName, "w"); fprintf(f, "variableStep chrom=chr1 span=10\n"); carefulClose(&f); } void makeShortVar(char *fileName) /* Make short fixed step test. */ { FILE *f = mustOpen(fileName, "w"); fprintf(f, "variableStep chrom=chr1 span=10\n"); fprintf(f, "100 1.0\n"); carefulClose(&f); } void makeShortBed(char *fileName) /* Make short fixed step test. */ { FILE *f = mustOpen(fileName, "w"); fprintf(f, "chr1\t100\t110\t1.0\n"); carefulClose(&f); } void makeManyContigs(char *fileName, int contigCount) /* Make a test bedGraph with many contigs. */ { int i; FILE *f = mustOpen(fileName, "w"); for (i=1; i<=contigCount; ++i) { fprintf(f, "contig%d\t%d\t%d\t%g\n", i, 1000000+i, 1000100+i, 1.0/i); fprintf(f, "contig%d\t%d\t%d\t%g\n", i, 1001000+i, 1001100+i, i*1.000001); } carefulClose(&f); } #define TWOPI (3.1415 * 2.0) void makeSineSineFixed(char *fileName, int innerRes, int outerRes, int outerCount, int chromCount) /* Make a test set involving sine modulated sine waves in fixedStep format. */ { FILE *f = mustOpen(fileName, "w"); int totalSteps = innerRes * outerRes * outerCount; double innerStep = TWOPI/innerRes; double outerStep = TWOPI/(innerRes*outerRes); int chromIx; for (chromIx=1; chromIx<=chromCount; ++chromIx) { fprintf(f, "fixedStep chrom=chr%d start=1 step=1 span=1\n", chromIx); double outerAngle = 0, innerAngle = 0; int i; for (i=0; i<totalSteps; ++i) { fprintf(f, "%f\n", 100.0*sin(innerAngle)*sin(outerAngle)); innerAngle += innerStep; outerAngle += outerStep; } } carefulClose(&f); } void makeSineSineVar(char *fileName, int innerRes, int outerRes, int outerCount, int chromCount) /* Make a test set involving sine modulated sine waves in variableStep format. */ { FILE *f = mustOpen(fileName, "w"); int totalSteps = innerRes * outerRes * outerCount; double innerStep = TWOPI/innerRes; double outerStep = TWOPI/(innerRes*outerRes); int chromIx; for (chromIx=1; chromIx<=chromCount; ++chromIx) { fprintf(f, "variableStep chrom=chr%d span=1\n", chromIx); double outerAngle = 0, innerAngle = 0; int i; for (i=0; i<totalSteps; ++i) { fprintf(f, "%d\t%f\n", i+1, 100.0*sin(innerAngle)*sin(outerAngle)); innerAngle += innerStep; outerAngle += outerStep; } } carefulClose(&f); } void makeSineSineBed(char *fileName, int innerRes, int outerRes, int outerCount, int chromCount) /* Make a test set involving sine modulated sine waves in bedGraph format. */ { FILE *f = mustOpen(fileName, "w"); int totalSteps = innerRes * outerRes * outerCount; double innerStep = TWOPI/innerRes; double outerStep = TWOPI/(innerRes*outerRes); int chromIx; for (chromIx=1; chromIx<=chromCount; ++chromIx) { double outerAngle = 0, innerAngle = 0; int i; for (i=0; i<totalSteps; ++i) { fprintf(f, "chr%d\t%d\t%d\t%f\n", chromIx, i, i+1, 100.0*sin(innerAngle)*sin(outerAngle)); innerAngle += innerStep; outerAngle += outerStep; } } carefulClose(&f); } void makeMixem(char *fileName) /* Make a file that mixes up various types */ { FILE *f = mustOpen(fileName, "w"); fprintf(f, "variableStep chrom=chr1\n"); fprintf(f, "100\t1.0\n"); fprintf(f, "200\t2.0\n"); fprintf(f, "fixedStep chrom=chr1 start=1000 step=2\n"); fprintf(f, "1.0\n"); fprintf(f, "2.0\n"); fprintf(f, "3.0\n"); fprintf(f, "4.0\n"); fprintf(f, "chr1\t10000\t10100\t100\n"); fprintf(f, "chr1\t20000\t20100\t200\n"); fprintf(f, "chr2\t10000\t10100\t100\n"); fprintf(f, "chr3\t10000\t10100\t100\n"); fprintf(f, "fixedStep chrom=chr11 start=1000 step=2\n"); fprintf(f, "11.0\n"); fprintf(f, "12.0\n"); fprintf(f, "13.0\n"); fprintf(f, "14.0\n"); carefulClose(&f); } void makeIncreasing(char *fileName) /* Make simple fixed step wiggle with increasing sequence. */ { FILE *f = mustOpen(fileName, "w"); int i; double inc = 0.001; double x = 0; fprintf(f, "fixedStep chrom=chr1 start=1 step=10 span=5\n"); for (i=0; i<1000000; ++i) { fprintf(f, "%f\n", x); x += inc; } carefulClose(&f); } void makeChromSizes(char *fileName, int count) /* Make a chrom size file */ { FILE *f = mustOpen(fileName, "w"); int i; for (i=1; i<=count; ++i) fprintf(f, "chr%d\t%d\n", i, 100000000+i); carefulClose(&f); } void makeContigSizes(char *fileName, int count) /* Make scaffold size file. */ { FILE *f = mustOpen(fileName, "w"); int i; for (i=1; i<=count; ++i) fprintf(f, "contig%d\t%d\n", i, 2000000+i); carefulClose(&f); } void wigTestMaker(char *outDir) /* wigTestMaker - Create test wig files.. */ { makeDir(outDir); setCurrentDir(outDir); makeChromSizes("chrom.sizes", 100); makeEmpty("empty.wig"); makeEmptyFixed("emptyFixed.wig"); makeEmptyVar("emptyVar.wig"); makeShortFixed("shortFixed.wig"); makeShortVar("shortVar.wig"); makeShortBed("shortBed.wig"); makeSineSineFixed("sineSineFixed.wig", 1000, 500, 10, 8); makeSineSineVar("sineSineVar.wig", 1000, 500, 10, 4); makeSineSineBed("sineSineBed.wig", 1000, 500, 10, 2); makeIncreasing("increasing.wig"); makeMixem("mixem.wig"); makeContigSizes("contig.sizes", 666666); makeManyContigs("contigs.wig", 666666); } int main(int argc, char *argv[]) /* Process command line. */ { optionInit(&argc, argv, options); if (argc != 2) usage(); wigTestMaker(argv[1]); return 0; }