diff --git a/src/gui/project_view/project_view.ui b/src/gui/project_view/project_view.ui
index b6425a66ad6810815c5e3bf2c8689d721166bc37..358663a03736f06d9531b97f01d9000f673c92c3 100644
--- a/src/gui/project_view/project_view.ui
+++ b/src/gui/project_view/project_view.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>465</width>
-    <height>493</height>
+    <height>533</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -24,7 +24,7 @@
        <string/>
       </property>
       <property name="currentIndex">
-       <number>0</number>
+       <number>2</number>
       </property>
       <widget class="QWidget" name="identifications">
        <attribute name="title">
@@ -133,9 +133,39 @@
            </widget>
           </item>
           <item>
-           <widget class="QGroupBox" name="groupBox">
+           <layout class="QHBoxLayout" name="horizontalLayout_3">
+            <item>
+             <widget class="QRadioButton" name="decoy_database_files_radiobutton">
+              <property name="toolTip">
+               <string>select decoy sequences from fasta files</string>
+              </property>
+              <property name="text">
+               <string>database files</string>
+              </property>
+              <attribute name="buttonGroup">
+               <string notr="true">decoy_source_buttongroup</string>
+              </attribute>
+             </widget>
+            </item>
+            <item>
+             <widget class="QRadioButton" name="decoy_regexp_radiobutton">
+              <property name="toolTip">
+               <string>select decoy sequences based on a regular expression</string>
+              </property>
+              <property name="text">
+               <string>regular expression</string>
+              </property>
+              <attribute name="buttonGroup">
+               <string notr="true">decoy_source_buttongroup</string>
+              </attribute>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item>
+           <widget class="QGroupBox" name="decoy_database_groupbox">
             <property name="title">
-             <string>Decoy database files</string>
+             <string>Choose decoy database files</string>
             </property>
             <layout class="QVBoxLayout" name="verticalLayout_3">
              <item>
@@ -169,9 +199,9 @@
            </widget>
           </item>
           <item>
-           <widget class="QGroupBox" name="groupBox_2">
+           <widget class="QGroupBox" name="decoy_regexp_groupbox">
             <property name="title">
-             <string>Decoy protein regular expression</string>
+             <string>Set regular expression to select decoy proteins</string>
             </property>
             <layout class="QVBoxLayout" name="verticalLayout_4">
              <item>
@@ -181,6 +211,19 @@
                </property>
               </widget>
              </item>
+             <item>
+              <spacer name="verticalSpacer">
+               <property name="orientation">
+                <enum>Qt::Vertical</enum>
+               </property>
+               <property name="sizeHint" stdset="0">
+                <size>
+                 <width>20</width>
+                 <height>40</height>
+                </size>
+               </property>
+              </spacer>
+             </item>
             </layout>
            </widget>
           </item>
@@ -388,10 +431,46 @@
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>decoy_database_files_radiobutton</sender>
+   <signal>clicked()</signal>
+   <receiver>ProjectView</receiver>
+   <slot>doSelectDecoySource()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>110</x>
+     <y>184</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>682</x>
+     <y>256</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>decoy_regexp_radiobutton</sender>
+   <signal>clicked()</signal>
+   <receiver>ProjectView</receiver>
+   <slot>doSelectDecoySource()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>326</x>
+     <y>192</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>693</x>
+     <y>239</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
  <slots>
   <slot>doFdrChanged()</slot>
   <slot>doMassPrecisionUnitChanged(QString)</slot>
   <slot>doIdentificationsComboboxChanged(int)</slot>
+  <slot>doSelectDecoySource()</slot>
  </slots>
+ <buttongroups>
+  <buttongroup name="decoy_source_buttongroup"/>
+ </buttongroups>
 </ui>
diff --git a/src/gui/project_view/projectwindow.cpp b/src/gui/project_view/projectwindow.cpp
index 804241d0f40f01ccd6b60ae9cf3a67dd7ac46cc8..06ddc310a28cdd9cba976b29c334922e9576756e 100644
--- a/src/gui/project_view/projectwindow.cpp
+++ b/src/gui/project_view/projectwindow.cpp
@@ -155,7 +155,7 @@ void ProjectWindow::connectNewPtmIslandListWindow() {
 void ProjectWindow::connectNewProteinListWindow() {
     qDebug() << "ProjectWindow::connectNewProteinListWindow begin";
     _p_current_protein_list_window = new ProteinListWindow(this);
-    
+
     _protein_list_window_collection.push_back(_p_current_protein_list_window);
 
     qDebug() << "ProjectWindow::connectNewProteinListWindow end";
@@ -341,23 +341,25 @@ void ProjectWindow::doFdrChanged() {
     try {
         showWaitingMessage(tr("FDR modifications"));
         doDisplayLoadingMessage(tr("tagging decoy proteins"));
-        QModelIndexList index_list = ui->decoy_database_listview->selectionModel()->selectedIndexes();
-        if (index_list.size() > 0) {
-            qDebug() << "ProjectWindow::doFdrChanged index_list.size()=" << index_list.size();
+        if (ui->decoy_regexp_radiobutton->isChecked()) {
+            _project_sp.get()->getProteinStore().setRegexpDecoyPattern(ui->decoy_protein_regexp_line_edit->text());
+        }
+        else {
             _project_sp.get()->getProteinStore().clearDecoys();
-            for (QModelIndex index :index_list) {
-                if (index.data(Qt::UserRole).canConvert<FastaFile *>()) {
-                    FastaFile * p_fasta_file = index.data(Qt::UserRole).value<FastaFile *>();
-                    p_fasta_file->setDecoys(_project_sp.get()->getProteinStore());
-                }
-                else {
-                    throw pappso::PappsoException(QObject::tr("can not convert to FastaFile index.data().canConvert<FastaFile *>()"));
+            QModelIndexList index_list = ui->decoy_database_listview->selectionModel()->selectedIndexes();
+            if (index_list.size() > 0) {
+                qDebug() << "ProjectWindow::doFdrChanged index_list.size()=" << index_list.size();
+                for (QModelIndex index :index_list) {
+                    if (index.data(Qt::UserRole).canConvert<FastaFile *>()) {
+                        FastaFile * p_fasta_file = index.data(Qt::UserRole).value<FastaFile *>();
+                        p_fasta_file->setDecoys(_project_sp.get()->getProteinStore());
+                    }
+                    else {
+                        throw pappso::PappsoException(QObject::tr("can not convert to FastaFile index.data().canConvert<FastaFile *>()"));
+                    }
                 }
             }
         }
-        else {
-            _project_sp.get()->getProteinStore().setRegexpDecoyPattern(ui->decoy_protein_regexp_line_edit->text());
-        }
         doDisplayLoadingMessage(tr("updating filters"));
         _project_sp.get()->updateAutomaticFilters(_project_sp.get()->getAutomaticFilterParameters());
 
@@ -587,6 +589,8 @@ void ProjectWindow::setProjectSp(ProjectSp project_sp) {
     qDebug() << "ProjectWindow::setProjectSp begin" ;
 
     _project_sp = project_sp;
+    ui->decoy_regexp_radiobutton->setChecked(true);
+    ui->decoy_database_groupbox->setVisible(false);
 
     qDebug() << "ProjectWindow::setProjectSp begin " << _project_sp.get()->getFastaFileStore().getFastaFileList().size() ;
     _fastafile_list = _project_sp.get()->getFastaFileStore().getFastaFileList();
@@ -782,3 +786,17 @@ void ProjectWindow::openInXicViewer(const PeptideEvidence * p_peptide_evidence)
     _p_xic_window->addXic(p_peptide_evidence);
     qDebug() << "ProjectWindow::openInXicViewer end";
 }
+
+
+void ProjectWindow::doSelectDecoySource() {
+    qDebug() << "ProjectWindow::doSelectDecoySource begin";
+    ui->decoy_database_groupbox->setVisible(false);
+    ui->decoy_regexp_groupbox->setVisible(false);
+    if (ui->decoy_database_files_radiobutton->isChecked()) {
+        ui->decoy_database_groupbox->setVisible(true);
+    }
+    else {
+        ui->decoy_regexp_groupbox->setVisible(true);
+    }
+    qDebug() << "ProjectWindow::doSelectDecoySource end";
+}
diff --git a/src/gui/project_view/projectwindow.h b/src/gui/project_view/projectwindow.h
index a9439ef4ff0caca3774f290b3e305885aef53fe9..a0701fd86fdfc333cf0c85150cad2dbe7c990969 100644
--- a/src/gui/project_view/projectwindow.h
+++ b/src/gui/project_view/projectwindow.h
@@ -69,6 +69,7 @@ public slots:
     void setDefaultProteinListWindow(ProteinListWindow* p_protein_list_window);
     void doAutomaticFilterParametersChanged(AutomaticFilterParameters parameters);
     void doFdrChanged();
+    void doSelectDecoySource();
     void doMassPrecisionUnitChanged(QString combo_value);
     void doOperationFailed(QString);
     void doOperationFinished();