正常读完文件,然后退出

This commit is contained in:
zzh 2025-04-17 18:29:12 +08:00
parent 588abd70f2
commit bcb8b420ba
3 changed files with 15 additions and 5 deletions

View File

@ -59,7 +59,7 @@ void parseSamHeader(FILE *fp, HeaderBuf &hdrBuf) {
blockLen = unpackInt16(&fBuf[16]) + 1; blockLen = unpackInt16(&fBuf[16]) + 1;
readState = fread(&fBuf[BLOCK_HEADER_LENGTH], 1, blockLen - BLOCK_HEADER_LENGTH, fp); readState = fread(&fBuf[BLOCK_HEADER_LENGTH], 1, blockLen - BLOCK_HEADER_LENGTH, fp);
header = sam_hdr_init(); header = sam_hdr_init();
spdlog::info("Header file size: {}", blockLen);
uint32_t crc = le_to_u32(fBuf + blockLen - 8); uint32_t crc = le_to_u32(fBuf + blockLen - 8);
int ret = bgzfUncompress(uData.data, &dlen, (Bytef *)fBuf + 18, blockLen - 18, crc); int ret = bgzfUncompress(uData.data, &dlen, (Bytef *)fBuf + 18, blockLen - 18, crc);

View File

@ -269,6 +269,7 @@ static void *nonBlockingUncompress(void *data) {
else else
((SortData *)data)->round++; ((SortData *)data)->round++;
// spdlog::info("block arr size: {}", ((SortData *)data)->blockAddrArr->size());
kt_for(nsgv::gSortArg.NUM_THREADS, mtUncompressBlock, data, ((SortData *)data)->blockAddrArr->size()); kt_for(nsgv::gSortArg.NUM_THREADS, mtUncompressBlock, data, ((SortData *)data)->blockAddrArr->size());
// kt_for(nsgv::gSortArg.NUM_THREADS, mtUncompressBlock, data, nsgv::gSortArg.NUM_THREADS); // kt_for(nsgv::gSortArg.NUM_THREADS, mtUncompressBlock, data, nsgv::gSortArg.NUM_THREADS);
PROF_G_END(uncompress); PROF_G_END(uncompress);
@ -343,13 +344,16 @@ int doSort() {
// 测试读取bam的速度 // 测试读取bam的速度
int max_bam_len = 0;
bam1_t *bamp = bam_init1(); bam1_t *bamp = bam_init1();
while (sam_read1(inBamFp, inBamHdr, bamp) >= 0) { while (sam_read1(inBamFp, inBamHdr, bamp) >= 0) {
if (max_bam_len < bamp->l_data) max_bam_len = bamp->l_data;
if (bamp->l_data > 1000) { if (bamp->l_data > 1000) {
spdlog::info("large record len: {}", bamp->l_data); spdlog::info("large record len: {}", bamp->l_data);
} }
} }
sam_close(inBamFp); sam_close(inBamFp);
spdlog::info("max record len: {}", max_bam_len);
return 0; return 0;
#endif #endif
@ -365,6 +369,8 @@ int doSort() {
// 打开文件 // 打开文件
FILE *fpr = fopen(nsgv::gSortArg.INPUT_FILE.c_str(), "rb"); FILE *fpr = fopen(nsgv::gSortArg.INPUT_FILE.c_str(), "rb");
// threadRead(fpr); exit(0);
parseSamHeader(fpr, nsgv::gInHdr); parseSamHeader(fpr, nsgv::gInHdr);
// FILE *fpw = fopen(nsgv::gSortArg.OUTPUT_FILE.c_str(), "rb"); // FILE *fpw = fopen(nsgv::gSortArg.OUTPUT_FILE.c_str(), "rb");
@ -449,6 +455,7 @@ int doSort() {
PROF_G_END(read); PROF_G_END(read);
while (readState > 0) { while (readState > 0) {
//spdlog::info("readState-0: {}", readState);
// while (readState > 0) { // while (readState > 0) {
PROF_G_BEG(parse_block); PROF_G_BEG(parse_block);
curStartAddrArr->clear(); curStartAddrArr->clear();
@ -477,6 +484,7 @@ int doSort() {
// exit(0); // exit(0);
READ_BLOCKS; READ_BLOCKS;
// spdlog::info("read block len: {}", blockLen);
// spdlog::info("cur block size: {}", curStartAddrArr->size()); // spdlog::info("cur block size: {}", curStartAddrArr->size());
@ -513,12 +521,14 @@ int doSort() {
SWITCH_POINTER; SWITCH_POINTER;
PROF_G_BEG(read); PROF_G_BEG(read);
// readState = fread(curBuf, 1, READ_BUFSIZE, fpr); readState = fread(curBuf, 1, READ_BUFSIZE, fpr);
//spdlog::info("readState: {}", readState);
PROF_G_BEG(mem_copy); PROF_G_BEG(mem_copy);
memcpy(curBuf, fbuf[4], READ_BUFSIZE); readState = READ_BUFSIZE; // memcpy(curBuf, fbuf[4], readState); readState = READ_BUFSIZE;
memcpy(curBuf, fbuf[4], readState);
PROF_G_END(mem_copy); PROF_G_END(mem_copy);
PROF_G_END(read); PROF_G_END(read);
if (fsize >= 6245369164) break; // if (fsize >= 6245369164) break;
} }
pthread_join(uncompressTid, NULL); pthread_join(uncompressTid, NULL);
PROF_G_END(mid_all); PROF_G_END(mid_all);

View File

@ -20,7 +20,7 @@ struct TemplateCoordinateKey {
// Struct which contains the a record, and the pointer to the sort tag (if any) or // Struct which contains the a record, and the pointer to the sort tag (if any) or
// a combined ref / position / strand. // a combined ref / position / strand.
// Used to speed up sorts (coordinate, by-tag, and template-coordinate). // Used to speed up sorts (coordinate, by-tag, and template-coordinate).
typedef struct BamSortTag { struct BamSortTag {
bam1_t *bam_record; bam1_t *bam_record;
union { union {
const uint8_t *tag; const uint8_t *tag;