Question: I would like to show that certain types of RBP motifs are enriched in RNA editing islands (i.e. clusters of RNA editing). However, I am unsure about how to think about sequence motifs with respect to their occurrence in other genomic features.

I understand how to find the probability of a motif at a location. i.e.

P(sequence is at position i) = P(A)^[A] \* P(C)^[C] \* P(G)^[G] \* P(T)^[T]

where (.) is the base pair and [.] is the number of bps. 

Instead what I would like to find is: 

P(sequence S is contained in a feature type T) = ???

where feature type T is an gene, intron, editing island, etc. I think I should incorporate length since I will mainly be comparing genes or introns vs. editing islands. Also, I am not sure what to do about the editing islands being located within genes. How can I keep from counting the same motif twice?

Any ideas would be greatly appreciated. Thank you for your time.

Answer: 
As far as I remember the exact probability computation is an open problem. The reason is that potential motifs can overlap, which makes probability computations for an arbitrary string non-trivial, and depends on the motif.

For example if he have a binary string of four digits, the probability of "01" will be 11/16, while the probability of "11" will be 8/16=1/2.

The simplest approximation is to assume that probability of the motif on every position of the sequence is equal and independent. In [such case](https://stepik.org/lesson/Some-Hidden-Messages-are-More-Surprising-than-Others-3/step/5?course=Bioinformatics-Algorithms&unit=7) (this comes from [this course](https://stepik.org/course/Bioinformatics-Algorithms-2)):

[![Pr(N,A,Pattern,t)](https://i.stack.imgur.com/WZH86.png)](https://i.stack.imgur.com/WZH86.png)

(Probability of text of length N having at least t occurrences of a k-mer Pattern, A is the number of letters in the alphabet, n = N – t \* k)

This approximation is very rough, there are better [here](https://doi.org/10.1016/0097-3165(81)90005-4).
As Iakov Davydov points out above mathematical calculation is very difficult. Particularly if you do not have uniform nucleotide, dinucleotide etc. frequencies. Thus I'd recommend using a method based on randomisation. 

You'd want to randomise only within genes since the likelihood of getting an editing island is likely to be dependent on expression level of the RNA. 

You might like to look at what people analysing CLIP data do for these sorts of analyses. See for example [Wang et al](https://www.ncbi.nlm.nih.gov/pubmed/21048981). Or I have code for this sort of thing in my [`iCLIPlib`](https://github.com/sudlab/iCLIPlib). See the module [`kmer.py`](https://github.com/sudlab/iCLIPlib/blob/master/iCLIP/kmers.py). (WARNING: this code is still in development, and is not "released" yet, so I offer no promises about bugs or how easy it would be for your to get working). However, these approaches generally only *rank* the significance of kmers rather than giving absolute significance values. 

[Genome Annotation Tester (GAT)](http://gat.readthedocs.io/en/latest/contents.html) might be of use here. You would define genes as your workspace, islands as your annotations, and motif matches as your segments of interest.