diff --git a/src/main/java/nl/wur/bif/pantools/pantools/Pantools.java b/src/main/java/nl/wur/bif/pantools/pantools/Pantools.java
index 48003ad02979fe69de9d54bfdfab93751b7aa7f8..2edf53658d53a5bd4654b6fd4337891883e1c4c0 100644
--- a/src/main/java/nl/wur/bif/pantools/pantools/Pantools.java
+++ b/src/main/java/nl/wur/bif/pantools/pantools/Pantools.java
@@ -10,6 +10,7 @@ package nl.wur.bif.pantools.pantools;
 import nl.wur.bif.pantools.cli.Map;
 import nl.wur.bif.pantools.cli.*;
 import nl.wur.bif.pantools.pangenome.PangenomeGraph;
+import nl.wur.bif.pantools.panva.panva_get_similarity.PanvaGetSimilarityCLI;
 import nl.wur.bif.pantools.utils.ConsoleInput;
 import nl.wur.bif.pantools.utils.Globals;
 import org.apache.commons.io.FileUtils;
@@ -103,7 +104,8 @@ import static picocli.CommandLine.ScopeType.INHERIT;
         RetrieveRegions.class,
         MSA.class,
         Map.class,
-        ExportPangenome.class
+        ExportPangenome.class,
+        PanvaGetSimilarityCLI.class
 })
 public class Pantools {
     @Parameters(descriptionKey = "database-path", index = "0", scope = INHERIT)
diff --git a/src/main/java/nl/wur/bif/pantools/panva/panva_get_similarity/PanvaGetSimilarity.java b/src/main/java/nl/wur/bif/pantools/panva/panva_get_similarity/PanvaGetSimilarity.java
new file mode 100644
index 0000000000000000000000000000000000000000..38f217f95da38ce42ebfdf7ec4613d51c9bbf9ce
--- /dev/null
+++ b/src/main/java/nl/wur/bif/pantools/panva/panva_get_similarity/PanvaGetSimilarity.java
@@ -0,0 +1,62 @@
+package nl.wur.bif.pantools.panva.panva_get_similarity;
+
+import nl.wur.bif.pantools.utils.Globals;
+import org.neo4j.graphdb.*;
+
+import java.io.BufferedWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+
+import static nl.wur.bif.pantools.utils.Globals.mRNA_label;
+
+public class PanvaGetSimilarity {
+    private final GraphDatabaseService graphDb;
+    final BufferedWriter writer;
+
+    public PanvaGetSimilarity(GraphDatabaseService graphDb, Path databaseDirectory) throws IOException {
+        this.graphDb = graphDb;
+        this.writer = createOutputWriter(databaseDirectory);
+        getSimilarity();
+    }
+
+    private BufferedWriter createOutputWriter(Path databaseDirectory) throws IOException {
+        final Path outputFile = databaseDirectory.resolve("panva").resolve("similarity_scores.csv");
+        Files.createDirectories(outputFile.getParent());
+        return new BufferedWriter(new FileWriter(outputFile.toFile()));
+    }
+
+    private void getSimilarity() throws IOException {
+        writer.write("genome1,mRNA1,genome2,mRNA2,similarity\n");
+        try (Transaction ignored = graphDb.beginTx()) {
+            final ResourceIterable<Relationship> relationships = graphDb.getAllRelationships();
+            relationships.stream().iterator().forEachRemaining(this::readSimilarityScore);
+        }
+        writer.close();
+    }
+
+    private void readSimilarityScore(Relationship relationship) {
+        if (!relationship.isType(Globals.RelTypes.is_similar_to)) return;
+        final Node startNode = relationship.getStartNode();
+        assert startNode.hasLabel(mRNA_label);
+        final Node endNode = relationship.getEndNode();
+        assert endNode.hasLabel(mRNA_label);
+        final String startNodeId = (String) startNode.getProperty("id");
+        final String endNodeId = (String) endNode.getProperty("id");
+        final int startGenome = (int) startNode.getProperty("genome");
+        final int endGenome = (int) endNode.getProperty("genome");
+        final String similarity = String.valueOf((double) relationship.getProperty("similarity"));
+        try {
+            writer.write(String.join(",",
+                    Integer.toString(startGenome),
+                    startNodeId,
+                    Integer.toString(endGenome),
+                    endNodeId,
+                    similarity));
+            writer.write("\n");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/src/main/java/nl/wur/bif/pantools/panva/panva_get_similarity/PanvaGetSimilarityCLI.java b/src/main/java/nl/wur/bif/pantools/panva/panva_get_similarity/PanvaGetSimilarityCLI.java
new file mode 100644
index 0000000000000000000000000000000000000000..1b77f179a86fac0752c9c1f5cd394ccc1cd9439b
--- /dev/null
+++ b/src/main/java/nl/wur/bif/pantools/panva/panva_get_similarity/PanvaGetSimilarityCLI.java
@@ -0,0 +1,39 @@
+package nl.wur.bif.pantools.panva.panva_get_similarity;
+
+import nl.wur.bif.pantools.cli.validation.BeanValidation;
+import nl.wur.bif.pantools.pantools.Pantools;
+import org.neo4j.graphdb.GraphDatabaseService;
+import picocli.CommandLine.Model.CommandSpec;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.util.concurrent.Callable;
+
+import static nl.wur.bif.pantools.cli.validation.Constraints.*;
+import static picocli.CommandLine.*;
+
+/**
+ * Command line interface for pantools panva_similarity_scores
+ *
+ * @author Robin van Esch, Wageningen University, the Netherlands
+ */
+@Command(name = "panva_get_similarity")
+public class PanvaGetSimilarityCLI implements Callable<Integer> {
+
+    @Spec CommandSpec spec;
+
+    @ParentCommand
+    @GraphDatabase
+    private Pantools pantools;
+
+    @Override
+    public Integer call() throws IOException {
+        pantools.createLogger(spec);
+        new BeanValidation().argValidation(spec, this);
+        pantools.setPangenomeGraph();
+        final Path databaseDirectory = pantools.getDatabaseDirectory();
+        final GraphDatabaseService graphDb = pantools.pangenomeGraph().getGraphDb();
+        new PanvaGetSimilarity(graphDb, databaseDirectory);
+        return 0;
+    }
+}