I used a script in R language that uses nnet library to predict promoter bacteria and i would like to know how to extract rules from this neural network results.

As my input of the neural network i have n positive examples of promoter and n false examples. I use as input these examples and the FASTA file with the genome of the bacteria. As a result, i have a value of 0 to 1 for each network tested corresponding to its learning. I want to discover roles that can improve my network in future experiments in the same bacteria.

Which algorithms or softwares could i use?

  • 1
    $\begingroup$ Welcome to Bioinformatics! Could you post an example? What kind of rules do you expect? What have you found/tried (to avoid proposing things you already did/search) ? $\endgroup$
    – llrs
    Jun 10, 2017 at 11:21
  • $\begingroup$ Please edit it into the question. What have you looked for to solve your problem? $\endgroup$
    – llrs
    Jun 10, 2017 at 11:33
  • $\begingroup$ I am starting to search for possible solutions to rule extraction. $\endgroup$ Jun 10, 2017 at 11:39
  • $\begingroup$ That would be the first thing before other people start to freely invest their time $\endgroup$
    – llrs
    Jun 10, 2017 at 14:13

2 Answers 2


Short answer: you can't.

Neural networks use positive and negative examples to add weights to the neural network architecture that is provided to it. Trying to deconvolve the meaning behind the weights is nigh-on impossible except for the simplest perceptron.

This is common to many machine learning algorithms: they work very much like black boxes. One exception is decision trees. They will report what features are used to classify the positive vs negative datasets.

However, as with all ML methods, you need to be very careful of your training datasets. This is especially true of motif searching and especially for negative datasets. It's quite easy to find a negative dataset which is completely inappropriate for learning and give you misleading accuracies.

Like @user172818, I would try traditional methods as they can work well, again, if given appropriate data. The MEME-suite would be a good start.

  • 1
    $\begingroup$ You may have a look at the paper under a link in my answer. For CNN, the weights in the first convolutional layer is interpretable. $\endgroup$
    – user172818
    Jul 11, 2017 at 20:45
  • $\begingroup$ Agree. Which is what I said about "the simplest perceptron". $\endgroup$
    – ithinkiam
    Aug 18, 2017 at 8:40

R's nnet package only supports fully connected neural networks with one hidden layer. This is the most primitive type of network. I doubt it will work well for promotors finding. In addition, such network won't give you useful interpretations.

If you want to explore neural networks, you should use a one-dimension convolution layer as is described in this paper. This layer effectively represents a positional weight matrix (PWM). You can know which motifs are used. With backtracking, you can also identify the coordinates of motifs. To deploy such a model, you need to be fairly familiar with deep learning and to learn one deep learning framework. For framework, you may start with keras. Once you get used to keras, you can implement your full promotor finder in less than 100 lines of python code. Alternatively, you may try dragonn. It is supposed to simplify deploying models for DNA sequences. I have no experience with it, though.

For promotor finding, it is also worth trying traditional methods. It is interesting that few/no neuralNet-based publications have evaluated traditional methods, probably because many ML people know little about classical motif finding. These methods could work well, too.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.