--- a
+++ b/docs/source/notes/encoders/mpnn.rst
@@ -0,0 +1,47 @@
+Message Passing Neural Network (MPNN)
+======================================================
+
+
+
+
+
+.. code-block:: python
+
+	class DeepPurpose.models.MPNN(nn.Sequential)
+
+`Message Passing Neural Network (MPNN) <https://www.biorxiv.org/content/10.1101/684662v3>`_  
+(`Source <https://github.com/kexinhuang12345/DeepPurpose/blob/master/DeepPurpose/models.py#L239>`_) 
+encode drug in its graph representation. 
+
+
+**constructor** create an instance of MPNN class. 
+
+.. code-block:: python
+
+	__init__(self, mpnn_hidden_size, mpnn_depth) 
+
+
+
+* **mpnn_hidden_size** (int) - specify dimension of hidden layer in MPNN, e.g,  mpnn_hidden_size = 256.
+* **mpnn_depth** (int) - specify depth of MPNN, e.g.,  mpnn_depth = 3. 
+
+
+**Calling functions** implement the feedforward procedure of MPNN. 
+
+
+.. code-block:: python
+
+	forward(self, feature)
+
+* **feature** (tuple of length 5)
+	* feature[0] (torch.Tensor) - atom-level feature  
+	* feature[1] (torch.Tensor) - bond-level feature 
+	* feature[2] (torch.Tensor) - neighbor information of every atom
+	* feature[3] (torch.Tensor) - neighbor information of every bond 
+	* feature[4] (torch.Tensor) - store number of atoms and bonds for each molecule in a batch 
+
+
+
+
+
+