コード例 #1
0
static inline void
resort_and_fill_gaps (GESTrack * track)
{
  g_sequence_sort (track->priv->trackelements_by_start,
      (GCompareDataFunc) element_start_compare, NULL);

  if (track->priv->updating == TRUE) {
    update_gaps (track);
  }
}
コード例 #2
0
ファイル: kalign2_misc.c プロジェクト: gllort/clustering
struct alignment* make_seq (struct alignment* aln, int a, int b, int* path)
{
    int c;
    int i;
    int posa = 0;
    int posb = 0;

    int* gap_a = 0;
    int* gap_b = 0;

    gap_a = malloc ( (path[0] + 1) *sizeof (int) );
    gap_b = malloc ( (path[0] + 1) *sizeof (int) );

    for (i = path[0] + 1; i--;)
    {
        gap_a[i] = 0;
        gap_b[i] = 0;
    }

    c = 1;

    while (path[c] != 3)
    {
        if (!path[c])
        {
            posa++;
            posb++;
        }

        if (path[c] & 1)
        {
            gap_a[posa] += 1;
            posb++;
        }

        if (path[c] & 2)
        {
            gap_b[posb] += 1;
            posa++;
        }

        c++;
    }

    for (i = aln->nsip[a]; i--;)
    {
        update_gaps (aln->sl[aln->sip[a][i]],
                     aln->s[aln->sip[a][i]],
                     path[0],
                     gap_a);
    }

    for (i = aln->nsip[b]; i--;)
    {
        update_gaps (aln->sl[aln->sip[b][i]],
                     aln->s[aln->sip[b][i]],
                     path[0],
                     gap_b);
    }

    free (gap_a);
    free (gap_b);
    free (path);
    return aln;
}