Esempio n. 1
0
void test_read_fasta_file(struct test *t) {
  t_set_msg(t, "Testing reading a fasta File...");
  struct genome_sequence *sequence_table = NULL;
  char filename[30] = "test/data/test.fasta";
  int err = read_fasta_file(&sequence_table, filename);
  t_assert_msg(t, err == E_SUCCESS, "Parsing failed");
  t_log(t, "Error: %d\n", err);

  struct genome_sequence *s = NULL;
  struct genome_sequence *tmp = NULL;
  HASH_ITER(hh, sequence_table, s, tmp) {
    s->data[s->n] = 0;
    t_log(t, "%s %s \n\n", s->chrom, s->data);
  }
Esempio n. 2
0
file_desc *init_file_desc()
{
    file_desc *f_desc = NULL;
    t_lock *block_list_lock = NULL;

    if(NULL == (f_desc = (file_desc *)t_malloc(sizeof(file_desc))))
    {
        t_log("malloc login_buf frame error!");
        return NULL;
    }

    if(NULL == (f_desc->block_head =\
        (file_block_desc *)t_malloc(sizeof(file_block_desc))))
        return NULL;
    f_desc->block_head->next = NULL;
    f_desc->block_tail = f_desc->block_head;

    block_list_lock = (t_lock *)t_malloc(sizeof(t_lock));
    init_lock(block_list_lock);
    f_desc->block_list_lock = block_list_lock;

    f_desc->file_size = 0;
    f_desc->file_id = 0;
    f_desc->block_count = 0;
    f_desc->last_frame_count = 0;
    f_desc->frame_remain = NULL;

    return f_desc;
    
}
Esempio n. 3
0
void test_valid_line(struct test *t) {
  t_set_msg(t, "Testing reading a valid Sam line...");
  char sample_line[1000] =
      "Seq23599_x1\t272\tscaffold_1\t67\t0\t"
      "21M\t*\t0\t0\tGCCACCCATGCCGCATCCACA\t"
      "IIIIIIIIIIIIIIIIIIIII\tAS:i:-6\tXN:i:0\tXM:i:1\tXO:i:0\t"
      "XG:i:0\tNM:i:1\tMD:Z:12A8\tYT:Z:UU\tNH:i:16\tCC:Z:=\t"
      "CP:i:250\tHI:i:0\n";
  struct sam_entry *test_entry = NULL;
  int result = parse_line(&test_entry, sample_line);
  t_assert_msg(t, result == E_SUCCESS, "Parsing the line failed");
  t_assert_msg(t, test_entry->flag == 272, "Flag parsed wrong");
  t_assert_msg(t, test_entry->pos == 67, "Position parsed wrong");
  t_log(t, "%s", test_entry->seq);
  t_assert_msg(t, strcmp(test_entry->seq, "GCCACCCATGCCGCATCCACA") == 0,
               "Sequence parsed wrong");
  free_sam_entry(test_entry);
}
Esempio n. 4
0
void read_thread(void *args)
{
    transfer_session    *session;
    file_desc           *f_desc;
    file_block_desc     *b_desc;
    frame_index         *f_index, *last_index;
    FILE                *fp = NULL;
    int                 err;

    int i = 0;
    
    session = (transfer_session *)args;
    f_desc = session->f_desc;

   
    for(;;)
    {
        if(session->state != STATE_TRANSFER)
        {
            /* if state = finish, close file and exit the thread */
            if(fp)
            {
                fclose(fp);
                fp = NULL;
            }
            sleep(1);
            continue;
        }
        
        if(NULL == fp)
        {
            if(NULL == (fp = fopen(f_desc->file_name, "r")))
            {
                t_log("open file error");
                continue;
            }
        }

        b_desc = get_first_block(f_desc);
        if(b_desc == ERR_BLOCK_LIST_NULL)
            return;
        else if(b_desc == ERR_BLOCK_LIST_EMPTY)
        {
            sleep(1);
            continue;
        }
        else
        {
            if(b_desc->retry_flag == ORIGIN_FRAME)
            {
                f_index = b_desc->index;
                for(i = 1; i <= MAX_FRAME_COUNT; i++)
                {
                    f_index->frame_index = i;
                    if(read_file_to_msg_q(f_index, f_desc, fp, session->data_qid) < 0)
                        break;
                }
                t_free(f_index);
            }
            else if(b_desc->retry_flag == RETRAN_FRAME)
            {
                printf("read_thread re tran\n");
                f_index = b_desc->index;
                if(f_index->frame_index == 0XFFFF)
                {
                    for(i = 1; i <= MAX_FRAME_COUNT; i++)
                    {
                        f_index->frame_index = i;
                        read_file_to_msg_q(f_index, f_desc, fp, session->data_qid);
                    }
                    t_free(f_index);

                }
                else
                {
                    do
                    {
                        read_file_to_msg_q(f_index, f_desc, fp, session->data_qid);
                        last_index = f_index;
                        f_index = f_index->next;
                        t_free(last_index);
                    }while(f_index);

                }


            }

        }

        t_free(b_desc);
//        printf("block:%d\n", b_desc->index->block_index);
            
    }

    return;

}