diff --git a/src/RNASeq.config b/src/RNASeq.config
index 09fc3bd043d632a7b2bb75e6cfeb3006a3c8ba37..c5d6daec3062cda01ba6dc95b3281b5111488020 100644
--- a/src/RNASeq.config
+++ b/src/RNASeq.config
@@ -12,9 +12,18 @@ profiles {
 withName: fasta_from_bed {
         container = "bedtools:2.25.0"
       }
+ withName: index_fasta {
+        container = "kallisto:0.44.0"
+      }
+ withName: mapping_fastq {
+        container = "kallisto:0.44.0"
+      }
 
     }
   }
+
+
+
   psmn {
     process{
       withName: adaptor_removal {
@@ -45,6 +54,27 @@ withName: fasta_from_bed {
         time = "12h"
         queue = 'monointeldeb128'
       }
+withName: index_fasta {
+        beforeScript = "source /usr/share/lmod/lmod/init/bash; module use ~/privatemodules"
+        module = "Kallisto/0.44.0"
+        executor = "sge"
+        clusterOptions = "-m e -cwd -V"
+        memory = "30GB"
+        time = "24h"
+        queue = 'E5-2670deb128A,E5-2670deb128B,E5-2670deb128C,E5-2670deb128D,E5-2670deb128E,E5-2670deb128F'
+        penv = 'openmp16'
+      }
+ withName: mapping_fastq {
+        beforeScript = "source /usr/share/lmod/lmod/init/bash; module use ~/privatemodules"
+        module = "Kallisto/0.44.0"
+        executor = "sge"
+        clusterOptions = "-m e -cwd -V"
+        memory = "30GB"
+        time = "24h"
+        queue = 'E5-2670deb128A,E5-2670deb128B,E5-2670deb128C,E5-2670deb128D,E5-2670deb128E,E5-2670deb128F'
+        penv = 'openmp16'
+      }
+
 
     }
   }
diff --git a/src/RNASeq.nf b/src/RNASeq.nf
index b32bee91a120d9b41b4550940922c89aa3dd6e5b..9915b30a33ccaf357ad8b171b33a0a294c26c6b6 100644
--- a/src/RNASeq.nf
+++ b/src/RNASeq.nf
@@ -2,10 +2,14 @@ params.fastq = "$baseDir/data/fastq/*_{1,2}.fastq"
 params.fasta = "$baseDir/data/fasta/*.fasta"
 params.bed = "$baseDir/data/annot/*.bed"
 
+
+
 log.info "fastq files : ${params.fastq}"
 log.info "fasta file : ${params.fasta}"
 log.info "bed file : ${params.bed}"
 
+
+
 Channel
   .fromFilePairs( params.fastq )
   .ifEmpty { error "Cannot find any fastq files matching: ${params.fastq}" }
@@ -18,6 +22,19 @@ Channel
   .fromPath( params.bed )
   .ifEmpty { error "Cannot find any bed files matching: ${params.bed}" }
   .set { bed_files }
+Channel
+  .fromPath( params.fasta )
+  .ifEmpty { error "Cannot find any bam files matching: ${params.fasta}" }
+  .set { fasta_file }
+Channel
+  .fromFilePairs( params.fastq )
+  .ifEmpty { error "Cannot find any fastq files matching: ${params.fastq}" }
+  .set { fastq_files }
+Channel
+  .fromPath( params.index )
+  .ifEmpty { error "Cannot find any index files matching: ${params.index}" }
+  .set { index_files }
+
 
 
 
@@ -38,7 +55,6 @@ process adaptor_removal {
   ${reads[0]} ${reads[1]} > ${pair_id}_report.txt
   """
 }
-
 process trimming {
   tag "${reads}"
   cpus 4
@@ -58,7 +74,6 @@ UrQt --t 20 --m ${task.cpus} --gz \
 > ${pair_id}_trimming_report.txt
 """
 }
-
 process fasta_from_bed {
   tag "${bed.baseName}"
   cpus 4
@@ -77,6 +92,45 @@ bedtools getfasta -name \
 -fi ${fasta} -bed ${bed} -fo ${bed.baseName}_extracted.fasta
 """
 }
+process index_fasta {
+  tag "$fasta.baseName"
+  cpus 4
+  publishDir "results/mapping/index/", mode: 'copy'
+
+  input:
+    file fasta from fasta_files_extracted
+
+  output:
+    file "*.index*" into index_files
+    file "*_kallisto_report.txt" into index_files_report
+
+  script:
+"""
+kallisto index -k 31 --make-unique -i ${fasta.baseName}.index ${fasta} \
+2> ${fasta.baseName}_kallisto_report.txt
+"""
+}
+process mapping_fastq {
+  tag "$reads"
+  cpus 4
+  publishDir "results/mapping/quantification/", mode: 'copy'
+
+  input:
+  set pair_id, file(reads) from fastq_files_trim
+  file index from index_files.collect()
+
+  output:
+  file "*" into counts_files
+
+  script:
+"""
+mkdir ${pair_id}
+kallisto quant -i ${index} -t ${task.cpus} \
+--bias --bootstrap-samples 100 -o ${pair_id} \
+${reads[0]} ${reads[1]} &> ${pair_id}/kallisto_report.txt
+"""
+}
+