\n", item);
+struct togaDataBB *info = togaDataBBLoad(&fields[11], bbi->fieldCount); // Bogdan: why 11? 0-11 are bed-like fields likely
printf("Reference transcript: %s ", info->ref_link);
printf("Genomic locus in reference: %s \n", info->ref_region);
printf("Genomic locus in query: %s \n", info->query_region);
printf("Projection classification: %s \n", info->status);
printf("Probability that query locus is orthologous: %s \n", info->chain_score);
// list of chain features (for orthology classification)
printf("Show features used for ortholog probability\n");
printf("
\n");
printf("
\n");
printf("
Synteny (log10 value): %s
\n", info->chain_synteny);
printf("
Global CDS fraction: %s
\n", info->chain_gl_cds_fract);
printf("
Local CDS fraction: %s
\n", info->chain_loc_cds_fract);
printf("
Local intron fraction: %s
\n", info->chain_intron_cov);
printf("
Local CDS coverage: %s
\n", info->chain_exon_cov);
printf("
Flank fraction: %s
\n", info->chain_flank);
printf("
\n");
printf(" \nFeature description:\n");
printf("For each projection (one reference transcript and one overlapping chain),\n");
printf("TOGA computes the following features by intersecting the reference coordinates of aligning\n");
printf("blocks in the chain with different gene parts (coding exons, UTR (untranslated region) exons, introns)\n");
printf("and the respective intergenic regions.\n \n");
printf("We define the following variables:\n
\n");
printf("
c: number of reference bases in the intersection between chain blocks and coding exons of the gene under consideration.
\n");
printf("
C: number of reference bases in the intersection between chain blocks and coding exons of all genes.
\n");
printf("
a: number of reference bases in the intersection between chain blocks and coding exons and introns of the gene under consideration.
\n");
printf("
A: number of reference bases in the intersection between chain blocks and coding exons and introns of all genes and the intersection\n");
printf("between chain blocks and intergenic regions (excludes UTRs).
\n");
printf("
f: number of reference bases in chain blocks overlapping the 10 kb flanks of the gene under consideration.\n");
printf("Alignment blocks overlapping exons of another gene that is located in these 10 kb flanks are ignored.
\n");
printf("
i: number of reference bases in the intersection between chain blocks and introns of the gene under consideration.
\n");
printf("
CDS (coding sequence): length of the coding region of the gene under consideration.
\n");
printf("
I: sum of all intron lengths of the gene under consideration.
\n");
printf("
\n");
printf("Using these variables, TOGA computes the following features:\n");
printf("
\n");
printf("
"global CDS fraction" as C / A. Chains with a high value have alignments that largely overlap coding exons,");
printf("which is a hallmark of paralogous or processed pseudogene chains. In contrast, chains with a low value also align many ");
printf("intronic and intergenic regions, which is a hallmark of orthologous chains.
\n");
printf("
"local CDS fraction" as c / a. Orthologous chains tend to have a lower value, as intronic ");
printf("regions partially align. This feature is not computed for single-exon genes.
\n");
printf("
"local intron fraction" as i / I. Orthologous chains tend to have a higher value.");
printf("This feature is not computed for single-exon genes.
\n");
printf("
"flank fraction" as f / 20,000. Orthologous chains tend to have higher values,");
printf("as flanking intergenic regions partially align. This feature is important to detect orthologous loci of single-exon genes.
\n");
printf("
"synteny" as log10 of the number of genes, whose coding exons overlap by at least one base aligning");
printf("blocks of this chain. Orthologous chains tend to cover several genes located in a conserved order, resulting in higher synteny values.
\n");
printf("
"local CDS coverage" as c / CDS, which is only used for single-exon genes.
Visualization of inactivating mutations on exon-intron structure
\n");
-printf("%s \n", info->svg_line);
+printf("%s\n", info->svg_line);
printf(" Exons shown in grey are missing (often overlap assembly gaps).\nExons shown in");
printf(" red or blue are deleted or do not align at all.\nRed indicates that the exon deletion ");
printf("shifts the reading frame, while blue indicates that exon deletion(s) are framepreserving. \n");
// GLP features
printf("Show features used for transcript classification\n");
printf("
\n");
printf("
\n");
printf("
Percent intact, ignoring missing sequence: %s
\n", info->perc_intact_ign_M);
printf("
Percent intact, treating missing as intact sequence: %s
\n", info->perc_intact_int_M);
printf("
Proportion of intact codons: %s
\n", info->intact_codon_prop);
printf("
Percent of CDS not covered by this chain (0 unless the chain covers only a part of the gene): %s
\n", info->ouf_prop);
if (sameWord(info->mid_intact, ONE_))
{
printf("
Middle 80 percent of CDS intact: %s
\n", YES_);
} else {
printf("
Middle 80 percent of CDS intact: %s
\n", NO_);
}
if (sameWord(info->mid_pres, ONE_))
{
printf("
\n");
// printf("{protein seq of the query without dashes or other things. Should end with *}\n");
printf("");
HLprintQueryProtSeqForAli(info->prot_alignment);
-printf("\n \n\n
\n", item);
char query[256];
struct sqlResult *sr = NULL;
char **row;
struct togaData *info = NULL;
sqlSafef(query, sizeof(query), "select * from %s where transcript='%s'", togaDataTableName, item);
sr = sqlGetResult(conn, query);
if ((row = sqlNextRow(sr)) != NULL) {
info = togaDataLoad(row); // parse sql output
// fill HTML template:
printf("Reference transcript: %s ",
info->ref_trans_id, info->ref_trans_id);
printf("Genomic locus in reference: %s \n", info->ref_region);
printf("Genomic locus in query: %s \n", info->query_region);
printf("Projection classification: %s \n", info->status);
printf("Probability that query locus is orthologous: %s \n", info->chain_score);
// list of chain features (for orthology classification)
printf("Show features used for ortholog probability\n");
printf("
\n");
printf("
\n");
printf("
Synteny (log10 value): %s
\n", info->chain_synteny);
printf("
Global CDS fraction: %s
\n", info->chain_gl_cds_fract);
printf("
Local CDS fraction: %s
\n", info->chain_loc_cds_fract);
printf("
Local intron fraction: %s
\n", info->chain_intron_cov);
printf("
Local CDS coverage: %s
\n", info->chain_exon_cov);
printf("
Flank fraction: %s
\n", info->chain_flank);
printf("
\n");
printf(" \nFeature description:\n");
printf("For each projection (one reference transcript and one overlapping chain),\n");
printf("TOGA computes the following features by intersecting the reference coordinates of aligning\n");
printf("blocks in the chain with different gene parts (coding exons, UTR (untranslated region) exons, introns)\n");
printf("and the respective intergenic regions.\n \n");
printf("We define the following variables:\n
\n");
printf("
c: number of reference bases in the intersection between chain blocks and coding exons of the gene under consideration.
\n");
printf("
C: number of reference bases in the intersection between chain blocks and coding exons of all genes.
\n");
printf("
a: number of reference bases in the intersection between chain blocks and coding exons and introns of the gene under consideration.
\n");
printf("
A: number of reference bases in the intersection between chain blocks and coding exons and introns of all genes and the intersection\n");
printf("between chain blocks and intergenic regions (excludes UTRs).
\n");
printf("
f: number of reference bases in chain blocks overlapping the 10 kb flanks of the gene under consideration.\n");
printf("Alignment blocks overlapping exons of another gene that is located in these 10 kb flanks are ignored.
\n");
printf("
i: number of reference bases in the intersection between chain blocks and introns of the gene under consideration.
\n");
printf("
CDS (coding sequence): length of the coding region of the gene under consideration.
\n");
printf("
I: sum of all intron lengths of the gene under consideration.
\n");
printf("
\n");
printf("Using these variables, TOGA computes the following features:\n");
printf("
\n");
printf("
"global CDS fraction" as C / A. Chains with a high value have alignments that largely overlap coding exons,");
printf("which is a hallmark of paralogous or processed pseudogene chains. In contrast, chains with a low value also align many ");
printf("intronic and intergenic regions, which is a hallmark of orthologous chains.
\n");
printf("
"local CDS fraction" as c / a. Orthologous chains tend to have a lower value, as intronic ");
printf("regions partially align. This feature is not computed for single-exon genes.
\n");
printf("
"local intron fraction" as i / I. Orthologous chains tend to have a higher value.");
printf("This feature is not computed for single-exon genes.
\n");
printf("
"flank fraction" as f / 20,000. Orthologous chains tend to have higher values,");
printf("as flanking intergenic regions partially align. This feature is important to detect orthologous loci of single-exon genes.
\n");
printf("
"synteny" as log10 of the number of genes, whose coding exons overlap by at least one base aligning");
printf("blocks of this chain. Orthologous chains tend to cover several genes located in a conserved order, resulting in higher synteny values.
\n");
printf("
"local CDS coverage" as c / CDS, which is only used for single-exon genes.
\n");
printf("
\n");
printf("\n
\n \n");
htmlHorizontalLine();
// show inact mut plot
printf("
Visualization of inactivating mutations on exon-intron structure
\n");
printf("%s \n", info->svg_line);
printf(" Exons shown in grey are missing (often overlap assembly gaps).\nExons shown in");
printf(" red or blue are deleted or do not align at all.\nRed indicates that the exon deletion ");
printf("shifts the reading frame, while blue indicates that exon deletion(s) are framepreserving. \n");
// GLP features
printf("Show features used for transcript classification\n");
printf("
\n");
printf("
\n");
printf("
Percent intact, ignoring missing sequence: %s
\n", info->perc_intact_ign_M);
printf("
Percent intact, treating missing as intact sequence: %s
\n", info->perc_intact_int_M);
printf("
Proportion of intact codons: %s
\n", info->intact_codon_prop);
printf("
Percent of CDS not covered by this chain (0 unless the chain covers only a part of the gene): %s
\n", info->ouf_prop);
if (sameWord(info->mid_intact, ONE_))
{
printf("
Middle 80 percent of CDS intact: %s
\n", YES_);
} else {
printf("
Middle 80 percent of CDS intact: %s
\n", NO_);
}
if (sameWord(info->mid_pres, ONE_))
{
printf("
\n");
// do not forget to free toga data struct
togaDataFree(&info);
} else {
// no data found, need to report this
printf("Not found data for %s\n", item);
}
sqlFreeResult(&sr);
}
// show inactivating mutations if required
printf("
List of inactivating mutations
\n");
if (hTableExists(database, togaInactMutTableName))
{
char query[256];
struct sqlResult *sr = NULL;
char **row;
sqlSafef(query, sizeof(query), "select * from %s where transcript='%s'", togaInactMutTableName, item);
sr = sqlGetResult(conn, query);
printf("Show inactivating mutations\n");
printf("
\n");
printf("
\n"); // init table
printf("
Exon number
Codon number
Mutation class
Mutation
Treated as inactivating
Mutation ID
\n");
printf("
\n");
while ((row = sqlNextRow(sr)) != NULL)
{
struct togaInactMut *info = NULL;
info = togaInactMutLoad(row);
printf("
\n");
printf("
%s
\n", info->exon_num);
printf("
%s
\n", info->position);
printf("
%s
\n", info->mut_class);
printf("
%s
\n", info->mutation);
if (sameWord(info->is_inact, ONE_)){
printf("
\n");
} else {
printf("Sorry, cannot find TOGANucl table. \n");
}
htmlHorizontalLine();
// TODO: check whether I need this
printf("%s", hgTracksPathAndSettings());
hPrintf("");
hPrintf("");
hPrintf("");
printTrackHtml(tdb); // and do I need this?
hFreeConn(&conn);
}