Mercurial > repos > vipints > rdiff
diff rDiff/src/tools/read_utils/splicingsequence.m @ 0:0f80a5141704
version 0.3 uploaded
author | vipints |
---|---|
date | Thu, 14 Feb 2013 23:38:36 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rDiff/src/tools/read_utils/splicingsequence.m Thu Feb 14 23:38:36 2013 -0500 @@ -0,0 +1,37 @@ +function [SPLICINGEVENTS, SEQUENCE, EXONSEQUENCE, IDENTIFICATIONLENGTH] = splicingsequence(GENE) +% This function generates all sequence of all splicesites +% SPLICINGEVENTS, a SEQUENCE marking which elements in +% SPLICINGEVENTS are introns and exons and a sequence for each +% transcript which indicates which Exons are in cluded in this transcript +% SEQUENCE contains indices of SPLICINGEVENTS, containing 1, if the position right to the idx in the transcript +% are exonic, 0 otherwise + + EXONS = GENE.exons; + START = GENE.start; + STOP = GENE.stop; + + NB_OF_TRANSCR = size(EXONS,2); + + SPLICINGEVENTS = []; + for i = 1:NB_OF_TRANSCR + SPLICINGEVENTS = [SPLICINGEVENTS, EXONS{i}(:,1)', EXONS{i}(:,2)' ]; + end + SPLICINGEVENTS = SPLICINGEVENTS - START + 1; + SPLICINGEVENTS = unique(SPLICINGEVENTS); + + EXONSEQUENCE = zeros(NB_OF_TRANSCR, length(SPLICINGEVENTS) - 1); + + for i = 1:NB_OF_TRANSCR + %%% for every exon in transcript i + for j = 1:size(EXONS{i}, 1) + POS_START = find(SPLICINGEVENTS == EXONS{i}(j,1) - START + 1, 1, 'first'); + POS_STOP = find(SPLICINGEVENTS < EXONS{i}(j,2) - START + 1, 1, 'last'); + %%% set splicing events active in transcript i to 1 + EXONSEQUENCE(i, POS_START:POS_STOP) = 1; + end + end + + %%% merge active splicing events of all transcripts + SEQUENCE = max(EXONSEQUENCE, [], 1); + IDENTIFICATIONLENGTH = []; +