diff --git a/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsKraken.scala b/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsKraken.scala
index 650bfc3051187e4e28927cb7da1ffd19d8a3e268..ba20fd2cc20fe85bf9da62b7b86cef5899faedc1 100644
--- a/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsKraken.scala
+++ b/public/gears/src/main/scala/nl/lumc/sasc/biopet/pipelines/gears/GearsKraken.scala
@@ -85,10 +85,18 @@ class GearsKraken(val root: Configurable) extends QScript with SummaryQScript wi
 }
 
 object GearsKraken {
+
   def convertKrakenJsonToKronaXml(files: Map[String, File], outputFile: File): Unit = {
+    val summaries = files.map { case (k, v) => k -> ConfigUtils.fileToConfigMap(v) }
+    convertKrakenSummariesToKronaXml(summaries, outputFile)
+  }
+
+  def convertKrakenSummariesToKronaXml(summaries: Map[String, Map[String, Any]], outputFile: File): Unit = {
+
+    val samples = summaries.keys.toList.sorted
 
-    val oriMap = files.map { case (k, v) => k -> ConfigUtils.fileToConfigMap(v) }
     val taxs: mutable.Map[String, Any] = mutable.Map()
+
     def addTax(map: Map[String, Any], path: List[String] = Nil): Unit = {
       val name = map("name").toString
       val x = path.foldLeft(taxs)((a, b) => if (a.contains(b)) a(b).asInstanceOf[mutable.Map[String, Any]] else {
@@ -100,12 +108,11 @@ object GearsKraken {
 
       map("children").asInstanceOf[List[Any]].foreach(x => addTax(x.asInstanceOf[Map[String, Any]], path ::: name :: Nil))
     }
-    oriMap.foreach { x =>
-      addTax(x._2("classified").asInstanceOf[Map[String, Any]])
-    }
+
+    summaries.foreach { x => addTax(x._2("classified").asInstanceOf[Map[String, Any]]) }
 
     def getValue(sample: String, path: List[String], key: String) = {
-      path.foldLeft(oriMap(sample)("classified").asInstanceOf[Map[String, Any]]) { (b, a) =>
+      path.foldLeft(summaries(sample)("classified").asInstanceOf[Map[String, Any]]) { (b, a) =>
         b.getOrElse("children", List[Map[String, Any]]())
           .asInstanceOf[List[Map[String, Any]]]
           .find(_.getOrElse("name", "") == a).getOrElse(Map[String, Any]())
@@ -113,20 +120,23 @@ object GearsKraken {
     }
 
     def createNodes(map: mutable.Map[String, Any], path: List[String] = Nil): Seq[Node] = {
-      (map.map {
+      map.map {
         case (k, v) =>
-          val node = <node name={ k }></node>
-          val sizes = oriMap.keySet.toList.map { sample => <val>{ getValue(sample, (path ::: k :: Nil).tail, "size").getOrElse(0) }</val> }
-          val size = <size>{ sizes }</size>
+          val node = <node name={k}></node>
+          val sizes = samples.map { sample => <val>
+            {getValue(sample, (path ::: k :: Nil).tail, "size").getOrElse(0)}
+          </val>
+          }
+          val size = <size>{sizes}</size>
           node.copy(child = size ++ createNodes(v.asInstanceOf[mutable.Map[String, Any]], path ::: k :: Nil))
-      }).toSeq
+      }.toSeq
     }
     val xml = <krona>
                 <attributes magnitude="size">
                   <attribute display="size">size</attribute>
                 </attributes>
                 <datasets>
-                  { oriMap.keySet.map { sample => <dataset>{ sample }</dataset> } }
+                  { samples.map { sample => <dataset>{ sample }</dataset> } }
                 </datasets>
               </krona>