diff --git a/src/grouping/ptm/ptmgroupingexperiment.cpp b/src/grouping/ptm/ptmgroupingexperiment.cpp
index 73339189cd46a3f9db4109f145263fca38f2e400..c52b912c496d49ca5e64a687c8ce58dbd0501db2 100644
--- a/src/grouping/ptm/ptmgroupingexperiment.cpp
+++ b/src/grouping/ptm/ptmgroupingexperiment.cpp
@@ -83,7 +83,7 @@ const std::vector<PtmIslandGroupSp> & PtmGroupingExperiment::getPtmIslandGroupLi
 }
 
 const std::vector<PtmIslandSp> & PtmGroupingExperiment::getPtmIslandList() const {
-    qDebug() << "PtmGroupingExperiment::getPtmIslandList begin" << _ptm_island_list.size();
+    //qDebug() << "PtmGroupingExperiment::getPtmIslandList begin" << _ptm_island_list.size();
     return _ptm_island_list;
 }
 
diff --git a/src/gui/ptm_island_list_view/ptm_island_list_view.ui b/src/gui/ptm_island_list_view/ptm_island_list_view.ui
index 01d7d80519d8d55e46c900ef15cd54739a693ba4..10d234c13099216a603877f052c95adaa48a3732 100644
--- a/src/gui/ptm_island_list_view/ptm_island_list_view.ui
+++ b/src/gui/ptm_island_list_view/ptm_island_list_view.ui
@@ -67,7 +67,7 @@
        </widget>
       </item>
       <item>
-       <widget class="QLineEdit" name="protein_search_edit"/>
+       <widget class="QLineEdit" name="ptm_search_edit"/>
       </item>
      </layout>
     </item>
@@ -79,19 +79,52 @@
      <x>0</x>
      <y>0</y>
      <width>826</width>
-     <height>23</height>
+     <height>25</height>
     </rect>
    </property>
   </widget>
   <widget class="QStatusBar" name="statusbar"/>
  </widget>
  <resources/>
- <connections/>
+ <connections>
+  <connection>
+   <sender>ptm_search_edit</sender>
+   <signal>textChanged(QString)</signal>
+   <receiver>PtmIslandListWindow</receiver>
+   <slot>doPtmSearchEdit(QString)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>485</x>
+     <y>357</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>1025</x>
+     <y>289</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>search_combobox</sender>
+   <signal>activated(QString)</signal>
+   <receiver>PtmIslandListWindow</receiver>
+   <slot>doSearchOn(QString)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>76</x>
+     <y>352</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>988</x>
+     <y>347</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
  <slots>
   <slot>doNotValidHide(bool)</slot>
   <slot>doNotCheckedHide(bool)</slot>
   <slot>doNotGroupedHide(bool)</slot>
-  <slot>onProteinSearchEdit(QString)</slot>
+  <slot>doPtmSearchEdit(QString)</slot>
   <slot>doSearchOn(QString)</slot>
  </slots>
 </ui>
diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
index e872d2e804bfef17ee13d47c6d2447ca6dbe791d..f3b0d219599b215608741c5d287634c47966b889 100644
--- a/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.cpp
@@ -55,7 +55,7 @@ PtmIslandListWindow::PtmIslandListWindow(ProjectWindow *parent):
     ui->ptm_island_tableview->setAlternatingRowColors(true);
 
 
-    
+
     _statusbar_ptm_islands_label  = new QLabel("");
     ui->statusbar->addWidget(_statusbar_ptm_islands_label);
 
@@ -177,3 +177,12 @@ void PtmIslandListWindow::updateStatusBar() {
     }
 }
 
+
+void PtmIslandListWindow::doPtmSearchEdit(QString ptm_search_string) {
+    _ptm_proxy_model_p->setPtmSearchString(ptm_search_string);
+    emit ptmIslandDataChanged();
+}
+void PtmIslandListWindow::doSearchOn(QString search_on) {
+    _ptm_proxy_model_p->setSearchOn(search_on);
+    emit ptmIslandDataChanged();
+}
diff --git a/src/gui/ptm_island_list_view/ptmislandlistwindow.h b/src/gui/ptm_island_list_view/ptmislandlistwindow.h
index a33bf2ce5e0319160d05a3f9ff46ec53991fe457..cb460570dd9c82afe281c3120d422e257af767ed 100644
--- a/src/gui/ptm_island_list_view/ptmislandlistwindow.h
+++ b/src/gui/ptm_island_list_view/ptmislandlistwindow.h
@@ -61,6 +61,9 @@ public slots:
 
 protected slots:
     void updateStatusBar();
+    void doPtmSearchEdit(QString ptm_search_string);
+    void doSearchOn(QString search_on);
+
 
 signals:
     void ptmIslandDataChanged();
diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
index 38a985b7276f388e5e743fc8e590669277187fbc..be015191e27cfe8afba36fe9778c010186822a1e 100644
--- a/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.cpp
@@ -36,8 +36,10 @@
 
 PtmIslandProxyModel::PtmIslandProxyModel(PtmIslandListWindow * p_ptm_island_list_window, PtmIslandTableModel* ptm_table_model_p)
 {
-  _p_ptm_island_list_window = p_ptm_island_list_window;
-  _p_ptm_island_table_model = ptm_table_model_p;
+    _p_ptm_island_list_window = p_ptm_island_list_window;
+    _p_ptm_island_table_model = ptm_table_model_p;
+    _ptm_search_string = "";
+    _search_on = "accession";
 }
 
 PtmIslandProxyModel::~PtmIslandProxyModel()
@@ -52,6 +54,40 @@ bool PtmIslandProxyModel::filterAcceptsRow(int source_row,
         PtmIslandSp sp_ptm_island = _p_ptm_island_table_model->getPtmGroupingExperiment()->getPtmIslandList().at(source_row);
         //qDebug() << "ProteinTableProxyModel::filterAcceptsRow protein_match " << source_row;
 
+        if (!_ptm_search_string.isEmpty()) {
+            if (_search_on == "accession") {
+                if (!sp_ptm_island.get()->getProteinMatch()->getProteinXtpSp().get()->getAccession().contains(_ptm_search_string)) {
+                    return false;
+                }
+            }
+            else if (_search_on == "group") {
+                if (!sp_ptm_island.get()->getGroupingId().startsWith(QString("ptm%1").arg(_ptm_search_string))) {
+                    return false;
+                }
+
+            }
+            else if (_search_on == "sequence") {
+                if (!sp_ptm_island.get()->getProteinMatch()->getProteinXtpSp().get()->getSequence().contains(_ptm_search_string)) {
+                    return false;
+                }
+            }
+            else if (_search_on == "peptide") {
+                QString peptide_search_string = QString(_ptm_search_string).replace("L","I");
+                for (const PeptideMatch & p_peptide_match: sp_ptm_island.get()->getProteinMatch()->getPeptideMatchList()) {
+                    if (p_peptide_match.getPeptideEvidence()->getPeptideXtpSp().get()->getSequenceLi().contains(peptide_search_string)) {
+                        return true;
+                    }
+                }
+                return false;
+            }
+
+            else if (_search_on == "description") {
+                //description
+                if (!sp_ptm_island.get()->getProteinMatch()->getProteinXtpSp().get()->getDescription().contains(_ptm_search_string)) {
+                    return false;
+                }
+            }
+        }
         if (sp_ptm_island != nullptr) {
             return true;
         }
@@ -84,16 +120,25 @@ void PtmIslandProxyModel::onTableClicked(const QModelIndex &index)
     QModelIndex source_index(this->mapToSource(index));
     int row = source_index.row();
     int col = source_index.column();
-    
+
     //ProteinMatch* p_protein_match = _p_ptm_island_table_model->getIdentificationGroup()->getProteinMatchList().at(row);
 
-        if ((col == (std::int8_t) PtmIslandListColumn::accession)||(col == (std::int8_t) PtmIslandListColumn::description)) {
-            //_p_ptm_island_table_model->askPtmProteinDetailView(p_protein_match);
-        }
-        else {
-            _p_ptm_island_list_window->askViewPtmPeptideList(_p_ptm_island_table_model->getPtmGroupingExperiment()->getPtmIslandList().at(row).get());
-        }
-    
+    if ((col == (std::int8_t) PtmIslandListColumn::accession)||(col == (std::int8_t) PtmIslandListColumn::description)) {
+        //_p_ptm_island_table_model->askPtmProteinDetailView(p_protein_match);
+    }
+    else {
+        _p_ptm_island_list_window->askViewPtmPeptideList(_p_ptm_island_table_model->getPtmGroupingExperiment()->getPtmIslandList().at(row).get());
+    }
+
     qDebug() << "PtmIslandProxyModel::onTableClicked end " << index.row();
 
 }
+
+
+void PtmIslandProxyModel::setSearchOn(QString search_on) {
+    _search_on = search_on;
+}
+
+void PtmIslandProxyModel::setPtmSearchString(QString ptm_search_string) {
+    _ptm_search_string = ptm_search_string;
+}
diff --git a/src/gui/ptm_island_list_view/ptmislandproxymodel.h b/src/gui/ptm_island_list_view/ptmislandproxymodel.h
index c55ab77914f86b8e4f49c3ec3f8ac56526f0684b..71eaf6d34045197cad1f16a1803f3141e560b8a4 100644
--- a/src/gui/ptm_island_list_view/ptmislandproxymodel.h
+++ b/src/gui/ptm_island_list_view/ptmislandproxymodel.h
@@ -45,14 +45,20 @@ public:
     ~PtmIslandProxyModel();
     bool filterAcceptsRow(int source_row,
                           const QModelIndex &source_parent) const override;
-                          
-                          
+
+    void setSearchOn(QString search_on);
+
+    void setPtmSearchString(QString ptm_search_string) ;
+
 public slots:
     void onTableClicked(const QModelIndex &index);
 
 private:
     PtmIslandListWindow * _p_ptm_island_list_window;
     PtmIslandTableModel * _p_ptm_island_table_model;
+    QString _search_on;
+    QString _ptm_search_string;
+
 };
 
 #endif // PTMISLANDPROXYMODEL_H
diff --git a/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp b/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp
index 2fd26318e17cda0e6a45e3f633340217d0feaa80..a51a54093c63dddc17d0830052725820a87d4acb 100644
--- a/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp
+++ b/src/gui/ptm_island_list_view/ptmislandtablemodel.cpp
@@ -143,9 +143,9 @@ const PtmGroupingExperiment * PtmIslandTableModel::getPtmGroupingExperiment() co
     return _p_identification_group->getPtmGroupingExperiment();
 }
 int PtmIslandTableModel::rowCount(const QModelIndex &parent ) const {
-    qDebug() << "PtmIslandTableModel::rowCount begin ";
+    //qDebug() << "PtmIslandTableModel::rowCount begin ";
     if (getPtmGroupingExperiment() != nullptr) {
-        qDebug() << "PtmIslandTableModel::rowCount(const QModelIndex &parent ) " << getPtmGroupingExperiment()->getPtmIslandList().size();
+        //qDebug() << "PtmIslandTableModel::rowCount(const QModelIndex &parent ) " << getPtmGroupingExperiment()->getPtmIslandList().size();
         return (int) getPtmGroupingExperiment()->getPtmIslandList().size();
     }
     return 0;