- Timestamp:
- Oct 16, 2017, 4:31:22 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ohana.20170822/src/opihi/cmd.data/uniqpair.c
r40173 r40174 5 5 6 6 int N; 7 Vector *ID1vec = NULL, *ID2vec = NULL, * SEQvec = NULL, *OUTvec = NULL;7 Vector *ID1vec = NULL, *ID2vec = NULL, *OUTvec = NULL; 8 8 9 9 int VERBOSE = FALSE; … … 14 14 15 15 Vector *SEQdup = NULL; 16 if ((N = get_argument (argc, argv, "- save-dups"))) {16 if ((N = get_argument (argc, argv, "-d"))) { 17 17 remove_argument (N, &argc, argv); 18 18 if ((SEQdup = SelectVector (argv[N], ANYVECTOR, TRUE)) == NULL) { … … 33 33 } 34 34 35 if (argc != 5) { 36 gprint (GP_ERR, "USAGE: uniqpair (ID1) (ID2) (IDout) -c count\n"); 35 if (argc != 4) { 36 gprint (GP_ERR, "USAGE: uniqpair (ID1) (ID2) (IDout) [-c count] [-d dupindex]\n"); 37 gprint (GP_ERR, " merge ID1 and ID2 (32 bit int values) into a single index and find unique entries\n"); 38 gprint (GP_ERR, " -c count: save the number of each unique entry in the count vector\n"); 39 gprint (GP_ERR, " -d dupindex: save the sequence number of duplicate entries in the dupindex vector\n"); 37 40 return (FALSE); 38 41 } … … 74 77 opihi_int *SEQdata = NULL; 75 78 ALLOCATE (IDfull, opihi_int, ID1vec->Nelements); 76 ALLOCATE (SEQdata, opihi_int, SEQvec[0].Nelements);79 ALLOCATE (SEQdata, opihi_int, ID1vec->Nelements); 77 80 for (int i = 0; i < ID1vec->Nelements; i++) { 78 81 IDfull[i] = ID1[i] + (ID2[i] << 32); … … 80 83 } 81 84 82 llsorttwo (IDfull, SEQdata, ID1vec->Nelements); 85 // XXX watch out: this all needs to get rationalized... 86 llsortpair ((off_t *)IDfull, (off_t *)SEQdata, ID1vec->Nelements); 83 87 84 88 opihi_int *vtgt = OUTvec->elements.Int; … … 111 115 // we want to save SEQdata values for the duplicates 112 116 // SEQdata[i-Ndup] .. SEQdata[i-N 113 for ( j = i - Ndup; j < i; j++) {117 for (int j = i - Ndup; j < i; j++) { 114 118 SEQdup->elements.Int[NseqDup] = SEQdata[j]; 115 119 NseqDup ++; … … 129 133 if (SEQdup) { 130 134 SEQdup->Nelements = NseqDup; 131 REALLOCATE (SEQdup->elements.Int, opihi_int, Nseq dup);135 REALLOCATE (SEQdup->elements.Int, opihi_int, NseqDup); 132 136 } 133 137 … … 135 139 OUTvec->elements.Int = vtgt; 136 140 ResetVector (OUTvec, OPIHI_INT, Nout); 137 if ( cvec) ResetVector (cvec, OPIHI_INT, Nout);141 if (CNTvec) ResetVector (CNTvec, OPIHI_INT, Nout); 138 142 139 143 return (TRUE); 140 144 } 141 142 143 144 }
Note:
See TracChangeset
for help on using the changeset viewer.
