diff --git a/docker-compose.yml b/docker-compose.yml
index e3b91868a8b86d5c6102de6b305428281d21b68e..6f9f5f1d3a5baca14a7e7900b572971c16b50263 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -12,26 +12,6 @@ services:
       - postgres:/data/postgres
     ports:
       - 5432:5432
-  pgadmin:
-    image: dpage/pgadmin4
-    depends_on:
-      - postgres
-    environment:
-      PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org}
-      PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-password}
-    volumes:
-      - pgadmin:/root/.pgadmin
-    ports:
-      - 5050:80
-
-  adminer:
-    image: adminer
-    depends_on:
-      - postgres
-    environment:
-      ADMINER_DEFAULT_SERVER: postgres
-    ports:
-      - 5000:8080
 
 volumes:
   postgres:
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/cpg/CpgRepository.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/cpg/CpgRepository.java
index 39d7bdcfea00ab067b9a5aff7d971d55dd229044..7291d7ac4758db39654058de4ab09ddc6e073c95 100644
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/cpg/CpgRepository.java
+++ b/src/main/java/cz/mendelu/dnaAnalyser/analyse/cpg/CpgRepository.java
@@ -18,7 +18,7 @@ public interface CpgRepository extends BaseRepository<Cpg, UUID> {
     @Query("select a from Cpg as a join a.owner o join a.tags t where t = :tag and o.id = ?#{principal.id}")
     Page<Cpg> findAll(Pageable pageable, @Param("tag") String tag);
 
-    @Query("select a from Cpg as a join a.owner o where a.id = :id and o.id = ?#{principal.id}")
+    @Query("select a from Cpg a where a.id = :id")
     Optional<Cpg> findById(@Param("id") UUID id);
 
     @Query("select distinct t from Cpg as s join s.owner o join s.tags t where o.id = ?#{principal.id}")
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/analyse/cpg/CpgService.java b/src/main/java/cz/mendelu/dnaAnalyser/analyse/cpg/CpgService.java
index 6c012e81d2be1a792cd7ada277ddb736deaf7894..9011e9c3c68d117165910fd76d88f2fc4c413534 100644
--- a/src/main/java/cz/mendelu/dnaAnalyser/analyse/cpg/CpgService.java
+++ b/src/main/java/cz/mendelu/dnaAnalyser/analyse/cpg/CpgService.java
@@ -1,14 +1,10 @@
 package cz.mendelu.dnaAnalyser.analyse.cpg;
 
-import cz.mendelu.dnaAnalyser.analyse.zdna.Zdna;
-import cz.mendelu.dnaAnalyser.analyse.zdna.ZdnaAnalyseResult;
-import cz.mendelu.dnaAnalyser.analyse.zdna.ZdnaMapper;
+
 import cz.mendelu.dnaAnalyser.batch.BatchService;
 import cz.mendelu.dnaAnalyser.sequence.Sequence;
 import cz.mendelu.dnaAnalyser.sequence.data.SequenceData;
 import cz.mendelu.dnaAnalyser.sequence.data.SequenceDataRepository;
-import cz.mendelu.dnaAnalyser.sequence.stream.BufferedWindow;
-import cz.mendelu.dnaAnalyser.sequence.stream.Window;
 import cz.mendelu.dnaAnalyser.utils.analyse.service.heatmap.Heatmap;
 import cz.mendelu.dnaAnalyser.utils.exception.NotFoundException;
 import cz.mendelu.dnaAnalyser.utils.repository.BaseRepository;
@@ -143,7 +139,7 @@ public class CpgService extends ModelService<Cpg> {
                     .mapToInt(e -> e.length)
                     .sum();
 
-            result = analysisCpg.size() != 0
+            result = !analysisCpg.isEmpty()
                     ? totalCpgLen / analysisCpg.size()
                     : 0;
         }
@@ -157,4 +153,9 @@ public class CpgService extends ModelService<Cpg> {
         if (!orderIterator.hasNext()) return null;
         return orderIterator.next();
     }
+
+    public Cpg findOne(UUID id) {
+    return cpgRepository.findById(id)
+            .orElseThrow(() -> new NotFoundException(Cpg.class, id));
+}
 }
diff --git a/src/main/java/cz/mendelu/dnaAnalyser/exporter/ExporterService.java b/src/main/java/cz/mendelu/dnaAnalyser/exporter/ExporterService.java
index 191b6fa0809e4ec862a14d434def2f9e16c9547c..08bb9b0311a4b1d40a9d096a3c2c96ba2d2327cd 100644
--- a/src/main/java/cz/mendelu/dnaAnalyser/exporter/ExporterService.java
+++ b/src/main/java/cz/mendelu/dnaAnalyser/exporter/ExporterService.java
@@ -1,8 +1,9 @@
 package cz.mendelu.dnaAnalyser.exporter;
 
 import com.opencsv.CSVWriter;
+import cz.mendelu.dnaAnalyser.analyse.cpg.CpgDataSessionService;
+import cz.mendelu.dnaAnalyser.analyse.cpg.CpgService;
 import cz.mendelu.dnaAnalyser.utils.analyse.service.AbstractDataSessionService;
-import cz.mendelu.dnaAnalyser.utils.exception.NotFoundException;
 import cz.mendelu.dnaAnalyser.analyse.g4hunter.quadruplex.QuadruplexDataSessionService;
 import cz.mendelu.dnaAnalyser.analyse.rloopr.RloopDataSessionService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +42,11 @@ public class ExporterService {
 
     @Autowired
     private AnalyseRepository analyseRepository;
+    @Autowired
+    private CpgDataSessionService cpgDataSessionService;
+
+    @Autowired
+    private CpgService cpgService;
 
     public String exportData(UUID id, Analysis analysis, Output format) {
 
@@ -65,6 +71,9 @@ public class ExporterService {
             case RLOOP:
                 sessionService = rloopDataSessionService;
                 break;
+            case CPG:
+                sessionService = cpgDataSessionService;
+                break;
             default:
                 // default to quadruplex for now
                 sessionService = quadruplexDataSessionService;
@@ -119,6 +128,13 @@ public class ExporterService {
         ArrayList<String> zdnaColumns = new ArrayList<>();
         zdnaColumns.add("SCORE");
 
+
+        ArrayList<String> cpxColumns = new ArrayList<>();
+        cpxColumns.add("GCPERC");
+        cpxColumns.add("OBSERVEDTOEXPECTEDCPG");
+        cpxColumns.add("LENGTH");
+
+
         String browserHeader = "browser position ";
         String result = "track type=bedGraph name=\"%s\" " +
                         "description=%s " + 
@@ -135,7 +151,7 @@ public class ExporterService {
         Integer posInGenomeStart = 0;
         Integer posInGenomeEnd = 0;
 
-        final String format = "%s %d %d %s\n";
+        String format = "%s %d %d %s\n";
 
         String chrom = getChromName(id);
         Pattern p = Pattern.compile("[A-Z][a-z].*_(chr[1-9XY]+):([0-9].+)-([0-9].+)"); // genome browser format, e.g. Human_chr8:128748315-128753680
@@ -175,6 +191,18 @@ public class ExporterService {
                 analysisColumnMapper = zdnaColumns;
                 break;
 
+            case CPG:
+                // Retrieve the second nucleotide from the Cpg service
+                Character secondNuc = cpgService.findOne(id).getSecondNucleotide();
+
+                // Set name and description based on the second nucleotide
+                name = "Cp" + (secondNuc != null ? secondNuc : "X") + " tracker";
+                description = "\"BedGraph output of Cp" + (secondNuc != null ? secondNuc : "X") + " analysis\"";
+
+                // Set the analysisColumnMapper based on the case
+                analysisColumnMapper = cpxColumns;
+                break;
+
             default:
                 name = "";
                 description = "";
@@ -196,6 +224,9 @@ public class ExporterService {
 
                     String strand = null;
                     int score = 0;
+                    double gcperc = 0.0;
+                    double observertoexpected = 0.0;
+                    int length = 0;
 
                     if (analysis == Analysis.RLOOP) {
                         strand = rs.getString("STRAND");
@@ -214,9 +245,18 @@ public class ExporterService {
                         score = (int) Math.ceil(rs.getDouble("SCORE") * 100);
                     } else if (analysis == Analysis.ZDNA) {
                         score = (int) Math.ceil(rs.getDouble("SCORE"));
+                    } else if (analysis == Analysis.CPG) {
+                        gcperc =  rs.getDouble("gcPerc");
+                        observertoexpected = rs.getDouble("observedToExpectedCpG");
+                        length = rs.getInt("length");
+                    }
+
+                    if (analysis == Analysis.CPG) {
+                        dataValue = String.format(" %.3f %.3f %d", gcperc*100, observertoexpected, length);
+                    } else {
+                        dataValue = String.format(" %d", score);
                     }
 
-                    dataValue = String.format(" %d", score);
 
                 } catch (SQLException e) {
                     log.error("Error fetching analysis data: {}", e);