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/orthoMap/agxToIntronBeds.c src/hg/orthoMap/agxToIntronBeds.c index 7eecc59..e24445d 100644 --- src/hg/orthoMap/agxToIntronBeds.c +++ src/hg/orthoMap/agxToIntronBeds.c @@ -1,149 +1,149 @@ /* agxToIntronBeds.c - Program to transform an altGraphX record into a series of introns. */ /* Copyright (C) 2004 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 "bed.h" #include "altGraphX.h" #include "dystring.h" void usage() { errAbort("agxToIntronBeds - Program to output all introns from altGraphX\n" "records as beds. Designed for use in MGC project looking for novel\n" "introns from altGraphX records transferred over from mouse.\n" "usage:\n" " agxToIntronBeds agxFile bedOutFile\n"); } struct bed *bedForEdge(struct altGraphX *ag, bool **em, int v1, int v2, int edgeCount) { int i; char buff[256]; int *vPos = ag->vPositions; int vCount = ag->vertexCount; int pos1=0, pos2=BIGNUM; int ev1=0, ev2=0; struct bed *bed = NULL; boolean found1 = FALSE, found2 = FALSE; /* Find first exon. */ for(i=0; i<vCount; i++) { if(em[i][v1] && altGraphXEdgeVertexType(ag, i, v1) == ggExon) { int edgeNum = altGraphXGetEdgeNum(ag, i, v1); struct evidence *ev = slElementFromIx(ag->evidence, edgeNum); if(ev->evCount > ev1) { found1 = TRUE; ev1 = ev->evCount; pos1 = vPos[i]; } } } /* Find second exon. */ for(i=0; i<vCount; i++) { if(em[v2][i] && altGraphXEdgeVertexType(ag, v2, i) == ggExon) { int edgeNum = altGraphXGetEdgeNum(ag, v2, i); struct evidence *ev = slElementFromIx(ag->evidence, edgeNum); if(ev->evCount > ev2) { found2 = TRUE; ev2 = ev->evCount; pos2 = vPos[i]; } } } if(found1 && found2) { AllocVar(bed); safef(buff, sizeof(buff), "%s.%d", ag->name, edgeCount); bed->name = cloneString(buff); safef(bed->strand, sizeof(bed->strand), "%s", ag->strand); bed->chrom = cloneString(ag->tName); bed->chromStart = bed->thickStart = pos1; bed->chromEnd = bed->thickEnd = pos2; bed->score = (ev1 + ev2)/2; AllocArray(bed->chromStarts, 2); AllocArray(bed->blockSizes, 2); bed->blockCount = 2; bed->chromStarts[0] = pos1 - bed->chromStart; bed->chromStarts[1] = vPos[v2] - bed->chromStart; bed->blockSizes[0] = vPos[v1] - pos1; bed->blockSizes[1] = pos2 - vPos[v2]; } return bed; } struct bed *bedIntronsFromAgx(struct altGraphX *ag) /* Produce an intron bed for every intron in the altGraphx. */ { struct bed *bed = NULL, *bedList = NULL; int i,j; int count =0; int vCount = ag->vertexCount; bool **em = altGraphXCreateEdgeMatrix(ag); for(i=0; i<vCount; i++) { for(j=0; j<vCount; j++) { if(em[i][j] && altGraphXEdgeVertexType(ag, i, j) == ggSJ) { bed = bedForEdge(ag, em, i, j, count++); if(bed != NULL) slAddHead(&bedList, bed); } } } altGraphXFreeEdgeMatrix(&em, vCount); slReverse(&bedList); return bedList; } void occassionalDot() /* Write out a dot every 20 times this is called. */ { static int dotMod = 500; static int dot = 500; if ((--dot <= 0)) { putc('.', stdout); fflush(stdout); dot = dotMod; } } void createIntronBeds(char *agxFile, char *bedFile) /* Make intron beds for evaluation. */ { struct altGraphX *ag=NULL, *agList = NULL; struct bed *bed=NULL, *bedList=NULL; FILE *bedOut = NULL; int count; warn("Rading AltGraphX list."); agList = altGraphXLoadAll(agxFile); warn("Converting to intron beds."); bedOut = mustOpen(bedFile, "w"); for(ag = agList; ag != NULL; ag = ag->next) { occassionalDot(); bedList = bedIntronsFromAgx(ag); for(bed=bedList; bed != NULL; bed=bed->next) { bedTabOutN(bed, 12, bedOut); } bedFreeList(&bedList); } altGraphXFreeList(&agList); } int main(int argc, char *argv[]) { if(argc != 3) usage(); createIntronBeds(argv[1], argv[2]); return 0; }