diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6
Binary files /dev/null and b/.DS_Store differ
diff --git a/primingsitepredictor/.idea/.gitignore b/primingsitepredictor/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..13566b81b018ad684f3a35fee301741b2734c8f4
--- /dev/null
+++ b/primingsitepredictor/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/primingsitepredictor/.idea/inspectionProfiles/profiles_settings.xml b/primingsitepredictor/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..105ce2da2d6447d11dfe32bfb846c3d5b199fc99
--- /dev/null
+++ b/primingsitepredictor/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="USE_PROJECT_PROFILE" value="false" />
+    <version value="1.0" />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/primingsitepredictor/.idea/misc.xml b/primingsitepredictor/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e6a7aa474cd32e70c4d9694c40996d01e47c23fc
--- /dev/null
+++ b/primingsitepredictor/.idea/misc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (tests)" project-jdk-type="Python SDK" />
+</project>
\ No newline at end of file
diff --git a/primingsitepredictor/.idea/modules.xml b/primingsitepredictor/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b7f52b9584a9cd9443097c0f753a17a344fa41a0
--- /dev/null
+++ b/primingsitepredictor/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/primingsitepredictor.iml" filepath="$PROJECT_DIR$/.idea/primingsitepredictor.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/primingsitepredictor/.idea/primingsitepredictor.iml b/primingsitepredictor/.idea/primingsitepredictor.iml
new file mode 100644
index 0000000000000000000000000000000000000000..d0876a78d06ac03b5d78c8dcdb95570281c6f1d6
--- /dev/null
+++ b/primingsitepredictor/.idea/primingsitepredictor.iml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/primingsitepredictor/.idea/vcs.xml b/primingsitepredictor/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6c0b8635858dc7ad44b93df54b762707ce49eefc
--- /dev/null
+++ b/primingsitepredictor/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/.." vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/primingsitepredictor/Primer1.fasta b/primingsitepredictor/Primer1.fasta
index 545f1100114ec5eb992d22bc71d364b8663a7638..251777b9e4a409e7bb32d851b7bee98032bd3d6c 100644
--- a/primingsitepredictor/Primer1.fasta
+++ b/primingsitepredictor/Primer1.fasta
@@ -1,2 +1,2 @@
-<primer1
-TTTTTTTTTTTTTTT
+<primer1
+TTTTTTTTTTTTTTT
diff --git a/primingsitepredictor/cli.py b/primingsitepredictor/cli.py
index 5b665962b5b9b5aa698793c7fe4e3d4cba2db16f..218fbb65b4c66ea098d317a17bbee015706d4933 100644
--- a/primingsitepredictor/cli.py
+++ b/primingsitepredictor/cli.py
@@ -1,35 +1,36 @@
 # -*- coding: utf-8 -*-
 """
-Created on Mon Nov 14 14:49:50 2022
+Changed on Fr Dec 23 16:49:50 2022
 
-@author: baerma
+@author: RobinC
 """
 import argparse
 import logging
 import main
 
-def create_parser():
-    """This function creates the parser"""
-    parser = argparse.ArgumentParser(
-    prog = 'Priming site predictor',
-    description = 'Takes a cutoff energy and the predicts location of priming sites of transcripts',
-    epilog = 'To predict or not to predict')
-    parser.add_argument('energycutoff', type=float, help='a float as energy Cutoff')
-    #parser.add_argument('transcripts', help='fastafile containing transcripts') #What type is that? fasta? Actually doesn't make sense here
-    args = parser.parse_args()
-    energy_cutoff = args.energycutoff
-    return energy_cutoff
-#possibly make a class out of this although I think it's an overkill
+class CLI():
+    def create_parser(self):
+        """This function creates the parser"""
 
-def letsgo():
-    energy_cutoff = create_parser()
-    print(f"Your energy cutoff is {energy_cutoff}")
+        parser = argparse.ArgumentParser(
+            prog = 'PrimingSitePredictor',
+            description = 'Takes a cutoff energy and the predicts location of priming sites of transcripts',
+            epilog = 'To predict or not to predict')
+        parser.add_argument('--float', type=float, required=True, help='A energy-cutoff float number')
+        parsed_args = parser.parse_args()
+        energy_cutoff = parsed_args.float
+        return energy_cutoff
+
+    def letsgo(self):
+        """This function creates a parser and prints the energycutoff"""
+        energy_cutoff = CLI.create_parser()
+        print(f"Your energy cutoff is {energy_cutoff}")
 
 if __name__ == '__main__':
     logging.basicConfig(
         format='[%(asctime)s: %(levelname)s] %(message)s (module "%(module)s")',
         level=logging.INFO,
-    )
+        )
     LOG = logging.getLogger(__name__)
     main()
-    #here we would point to the main module and parse the energy cutoff
+
diff --git a/primingsitepredictor/createprimer.py b/primingsitepredictor/createprimer.py
index c2c234f2eca3c07dd400098897f2586ceb0a7183..8dcd2329f74f6f0c6254ff428dd323aa9bf8fe53 100644
--- a/primingsitepredictor/createprimer.py
+++ b/primingsitepredictor/createprimer.py
@@ -1,8 +1,8 @@
 # -*- coding: utf-8 -*-
 """
-Created on Wed Nov 16 14:17:06 2022
+Changed on Fr Dec 23 14:34:20 2022
 
-@author: baerma
+@author: RobinC
 """
 
 class CreatePrimer:
@@ -13,8 +13,7 @@ class CreatePrimer:
         self.primer_length = primerlength
         self.primer_sequence = 'T'*self.primer_length
         self.lines = [f'<{self.name}', self.primer_sequence]
-        #print(self.primer)
-        #return self.primer
+
     
     def create_fasta(self):
         with open(f'{self.name}.fasta', 'w') as f:
diff --git a/primingsitepredictor/main.py b/primingsitepredictor/main.py
index 07348dd4b21c73c4a8be7d07a2f351e1cab7fd5f..d8d80b1e26440880da3aaacd2ffa336ebe0a95cf 100644
--- a/primingsitepredictor/main.py
+++ b/primingsitepredictor/main.py
@@ -1,10 +1,16 @@
+"""
+Changed on Tue Dec 20 14:06:20 2022
+
+@author: RobinC
+"""
 import sys
 from createprimer import CreatePrimer
 from postprocessing import PostProcessRIBlast
 
+
 def main():
     generate_RIBlast_input()
-    create_gtf()
+
         
 
 def generate_RIBlast_input():
@@ -20,9 +26,5 @@ def create_gtf():
     gtf_file = PostProcessRIBlast().output
     print(gtf_file)
 
-
-
-main()
-
 if __name__ == '__main__':
     main()
diff --git a/primingsitepredictor/my_primer.fasta b/primingsitepredictor/my_primer.fasta
new file mode 100644
index 0000000000000000000000000000000000000000..70ef81c7f1201827c1886f6cf15efec0ec65ecf3
--- /dev/null
+++ b/primingsitepredictor/my_primer.fasta
@@ -0,0 +1,2 @@
+<my_primer
+TTTTTTTTTTTTTTTTTTTT
diff --git a/primingsitepredictor/output_transcripts_df.GTF b/primingsitepredictor/output_transcripts_df.GTF
new file mode 100644
index 0000000000000000000000000000000000000000..89ba6f367701e787b727d3602c241853c88d61d8
--- /dev/null
+++ b/primingsitepredictor/output_transcripts_df.GTF
@@ -0,0 +1,33 @@
+Transcript_1	RIBlast	Priming_site	2974	2988	.	+	.	Interaction_Energy "0.01341899394212988"
+Transcript_1	RIBlast	Priming_site	4	18	.	+	.	Interaction_Energy "0.029617468622161858"
+Transcript_1	RIBlast	Priming_site	3	17	.	+	.	Interaction_Energy "0.033652793432239245"
+Transcript_1	RIBlast	Priming_site	2	16	.	+	.	Interaction_Energy "0.0436763978338453"
+Transcript_1	RIBlast	Priming_site	1	15	.	+	.	Interaction_Energy "0.07361927731913716"
+Transcript_1	RIBlast	Priming_site	0	14	.	+	.	Interaction_Energy "0.07913386517826602"
+Transcript_2	RIBlast	Priming_site	1270	1284	.	+	.	Interaction_Energy "0.023871738821072214"
+Transcript_2	RIBlast	Priming_site	1269	1283	.	+	.	Interaction_Energy "0.021998205780680843"
+Transcript_2	RIBlast	Priming_site	1268	1282	.	+	.	Interaction_Energy "0.02017380792576395"
+Transcript_2	RIBlast	Priming_site	1267	1281	.	+	.	Interaction_Energy "0.018400390375292373"
+Transcript_2	RIBlast	Priming_site	1266	1280	.	+	.	Interaction_Energy "0.016661952134191884"
+Transcript_2	RIBlast	Priming_site	1265	1279	.	+	.	Interaction_Energy "0.015028790572682043"
+Transcript_2	RIBlast	Priming_site	1264	1278	.	+	.	Interaction_Energy "0.013507972357530618"
+Transcript_2	RIBlast	Priming_site	1263	1277	.	+	.	Interaction_Energy "0.012121303370956734"
+Transcript_2	RIBlast	Priming_site	1262	1276	.	+	.	Interaction_Energy "0.0108940605154748"
+Transcript_2	RIBlast	Priming_site	1261	1275	.	+	.	Interaction_Energy "0.009818208415333858"
+Transcript_2	RIBlast	Priming_site	1260	1274	.	+	.	Interaction_Energy "0.008876574189642966"
+Transcript_2	RIBlast	Priming_site	1259	1273	.	+	.	Interaction_Energy "0.00807212607564225"
+Transcript_2	RIBlast	Priming_site	1258	1272	.	+	.	Interaction_Energy "0.007386053280385996"
+Transcript_2	RIBlast	Priming_site	1257	1271	.	+	.	Interaction_Energy "0.006777457533826199"
+Transcript_2	RIBlast	Priming_site	1256	1270	.	+	.	Interaction_Energy "0.006231339626935633"
+Transcript_2	RIBlast	Priming_site	1255	1269	.	+	.	Interaction_Energy "0.005701431631106869"
+Transcript_2	RIBlast	Priming_site	1254	1268	.	+	.	Interaction_Energy "0.005221962850186007"
+Transcript_2	RIBlast	Priming_site	1253	1267	.	+	.	Interaction_Energy "0.004743243630707861"
+Transcript_2	RIBlast	Priming_site	1252	1266	.	+	.	Interaction_Energy "0.0043514767009977685"
+Transcript_2	RIBlast	Priming_site	1251	1265	.	+	.	Interaction_Energy "0.004001246269203596"
+Transcript_2	RIBlast	Priming_site	1250	1264	.	+	.	Interaction_Energy "0.0035602658910861193"
+Transcript_2	RIBlast	Priming_site	1249	1263	.	+	.	Interaction_Energy "0.0034681706680775195"
+Transcript_2	RIBlast	Priming_site	1248	1262	.	+	.	Interaction_Energy "0.003588271464203091"
+Transcript_2	RIBlast	Priming_site	1247	1261	.	+	.	Interaction_Energy "0.0037963420302257692"
+Transcript_2	RIBlast	Priming_site	1246	1260	.	+	.	Interaction_Energy "0.004081499678888505"
+Transcript_2	RIBlast	Priming_site	1245	1259	.	+	.	Interaction_Energy "0.004411927146940477"
+Transcript_2	RIBlast	Priming_site	1244	1258	.	+	.	Interaction_Energy "0.00480978620121743"
diff --git a/primingsitepredictor/output_transcripts_df.txt b/primingsitepredictor/output_transcripts_df.txt
index bb43f201dfc4ff5c44ff9de6b45d5dfe82799c18..89ba6f367701e787b727d3602c241853c88d61d8 100644
--- a/primingsitepredictor/output_transcripts_df.txt
+++ b/primingsitepredictor/output_transcripts_df.txt
@@ -1,3 +1,33 @@
-Transcript_1	RIBlast	Priming_site	2974	2988	.	+	.	Accessibility_Energy "0.08051396365277928"
-Transcript_1	RIBlast	Priming_site	4	18	.	+	.	Accessibility_Energy "0.17770481173297115"
-Transcript_2	RIBlast	Priming_site	1270	1284	.	+	.	Accessibility_Energy "0.6445369481689498"
+Transcript_1	RIBlast	Priming_site	2974	2988	.	+	.	Interaction_Energy "0.01341899394212988"
+Transcript_1	RIBlast	Priming_site	4	18	.	+	.	Interaction_Energy "0.029617468622161858"
+Transcript_1	RIBlast	Priming_site	3	17	.	+	.	Interaction_Energy "0.033652793432239245"
+Transcript_1	RIBlast	Priming_site	2	16	.	+	.	Interaction_Energy "0.0436763978338453"
+Transcript_1	RIBlast	Priming_site	1	15	.	+	.	Interaction_Energy "0.07361927731913716"
+Transcript_1	RIBlast	Priming_site	0	14	.	+	.	Interaction_Energy "0.07913386517826602"
+Transcript_2	RIBlast	Priming_site	1270	1284	.	+	.	Interaction_Energy "0.023871738821072214"
+Transcript_2	RIBlast	Priming_site	1269	1283	.	+	.	Interaction_Energy "0.021998205780680843"
+Transcript_2	RIBlast	Priming_site	1268	1282	.	+	.	Interaction_Energy "0.02017380792576395"
+Transcript_2	RIBlast	Priming_site	1267	1281	.	+	.	Interaction_Energy "0.018400390375292373"
+Transcript_2	RIBlast	Priming_site	1266	1280	.	+	.	Interaction_Energy "0.016661952134191884"
+Transcript_2	RIBlast	Priming_site	1265	1279	.	+	.	Interaction_Energy "0.015028790572682043"
+Transcript_2	RIBlast	Priming_site	1264	1278	.	+	.	Interaction_Energy "0.013507972357530618"
+Transcript_2	RIBlast	Priming_site	1263	1277	.	+	.	Interaction_Energy "0.012121303370956734"
+Transcript_2	RIBlast	Priming_site	1262	1276	.	+	.	Interaction_Energy "0.0108940605154748"
+Transcript_2	RIBlast	Priming_site	1261	1275	.	+	.	Interaction_Energy "0.009818208415333858"
+Transcript_2	RIBlast	Priming_site	1260	1274	.	+	.	Interaction_Energy "0.008876574189642966"
+Transcript_2	RIBlast	Priming_site	1259	1273	.	+	.	Interaction_Energy "0.00807212607564225"
+Transcript_2	RIBlast	Priming_site	1258	1272	.	+	.	Interaction_Energy "0.007386053280385996"
+Transcript_2	RIBlast	Priming_site	1257	1271	.	+	.	Interaction_Energy "0.006777457533826199"
+Transcript_2	RIBlast	Priming_site	1256	1270	.	+	.	Interaction_Energy "0.006231339626935633"
+Transcript_2	RIBlast	Priming_site	1255	1269	.	+	.	Interaction_Energy "0.005701431631106869"
+Transcript_2	RIBlast	Priming_site	1254	1268	.	+	.	Interaction_Energy "0.005221962850186007"
+Transcript_2	RIBlast	Priming_site	1253	1267	.	+	.	Interaction_Energy "0.004743243630707861"
+Transcript_2	RIBlast	Priming_site	1252	1266	.	+	.	Interaction_Energy "0.0043514767009977685"
+Transcript_2	RIBlast	Priming_site	1251	1265	.	+	.	Interaction_Energy "0.004001246269203596"
+Transcript_2	RIBlast	Priming_site	1250	1264	.	+	.	Interaction_Energy "0.0035602658910861193"
+Transcript_2	RIBlast	Priming_site	1249	1263	.	+	.	Interaction_Energy "0.0034681706680775195"
+Transcript_2	RIBlast	Priming_site	1248	1262	.	+	.	Interaction_Energy "0.003588271464203091"
+Transcript_2	RIBlast	Priming_site	1247	1261	.	+	.	Interaction_Energy "0.0037963420302257692"
+Transcript_2	RIBlast	Priming_site	1246	1260	.	+	.	Interaction_Energy "0.004081499678888505"
+Transcript_2	RIBlast	Priming_site	1245	1259	.	+	.	Interaction_Energy "0.004411927146940477"
+Transcript_2	RIBlast	Priming_site	1244	1258	.	+	.	Interaction_Energy "0.00480978620121743"
diff --git a/primingsitepredictor/postprocessing.py b/primingsitepredictor/postprocessing.py
index 125950e493a8399cf4297eeb0778ca531325dc2a..e2504e0f98e7a6527f508715d018aace78066c5c 100644
--- a/primingsitepredictor/postprocessing.py
+++ b/primingsitepredictor/postprocessing.py
@@ -60,15 +60,10 @@ class PostProcessRIBlast():
 
         for index in self.interaction_df.index:
             self.output = self.output + str(self.interaction_df[3][index]+'\t' + 'RIBlast' + '\t' + 'Priming_site' + '\t' + self.interaction_df[13][index] + '\t' + self.interaction_df[12][index] + '\t' + '.' + '\t' + '+' + '\t' + '.' + '\t' + f'Interaction_Energy "{self.interaction_df["Normalised_interaction_energy"][index]}"' + '\n')
-<<<<<<< HEAD
         
-        with open('output_transcripts_df.txt', 'w') as f:
+        with open('output_transcripts_df.GTF', 'w') as f:
             f.write(self.output)
-            
+            return(self.output)
         
-=======
 
-        return(self.output)
->>>>>>> 9d8e928323a99c5e86557c4b53ab93aaf8f5beb5
-        
-#print(PostProcessRIBlast().output)
\ No newline at end of file
+print(PostProcessRIBlast().output)
\ No newline at end of file
diff --git a/primingsitepredictor/test/RIBlast output example.txt b/primingsitepredictor/test/RIBlast output example.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f3a270893926da9f8b302af5b15dbed875a6475f
--- /dev/null
+++ b/primingsitepredictor/test/RIBlast output example.txt	
@@ -0,0 +1,37 @@
+RIblast ris result
+input:queryRNA.fa,database:test_db,RepeatFlag:0,MaximalSpan:70,MinAccessibleLength:5,MaxSeedLength:20,InteractionEnergyThreshold:-4,HybridEnergyThreshold:-6,FinalThreshold:-8,DropOutLengthWoGap:5,DropOutLengthWGap:16
+Id,Query name, Query Length, Target name, Target Length, Accessibility Energy, Hybridization Energy, Interaction Energy, BasePair
+0,Test_Primer,15,Transcript_1,3233,1.49191,-9.76,-8.26809,(0-14:2988-2974) 
+1,Test_Primer,15,Transcript_1,3233,1.02308,-9.76,-8.73692,(0-14:18-4) 
+2,Test_Primer,15,Transcript_1,3233,0.947439,-9.73,-8.78256,(0-14:17-3) 
+3,Test_Primer,15,Transcript_1,3233,0.793049,-9.73,-8.93695,(0-14:16-2) 
+4,Test_Primer,15,Transcript_1,3233,0.483869,-9.73,-9.24613,(0-14:15-1) 
+5,Test_Primer,15,Transcript_1,3233,0.441093,-9.17,-8.72891,(0-14:14-0) 
+6,Test_Primer,15,Transcript_2,1285,0.260102,-9.1,-8.8399,(0-14:1284-1270) 
+7,Test_Primer,15,Transcript_2,1285,0.308504,-9.73,-9.4215,(0-14:1283-1269) 
+8,Test_Primer,15,Transcript_2,1285,0.359773,-9.73,-9.37023,(0-14:1282-1268) 
+9,Test_Primer,15,Transcript_2,1285,0.414262,-9.73,-9.31574,(0-14:1281-1267) 
+10,Test_Primer,15,Transcript_2,1285,0.473033,-9.73,-9.25697,(0-14:1280-1266) 
+11,Test_Primer,15,Transcript_2,1285,0.534123,-9.73,-9.19588,(0-14:1279-1265) 
+12,Test_Primer,15,Transcript_2,1285,0.597302,-9.73,-9.1327,(0-14:1278-1264) 
+13,Test_Primer,15,Transcript_2,1285,0.661445,-9.73,-9.06855,(0-14:1277-1263) 
+14,Test_Primer,15,Transcript_2,1285,0.724659,-9.73,-9.00534,(0-14:1276-1262) 
+15,Test_Primer,15,Transcript_2,1285,0.786234,-9.73,-8.94377,(0-14:1275-1261) 
+16,Test_Primer,15,Transcript_2,1285,0.84594,-9.73,-8.88406,(0-14:1274-1260) 
+17,Test_Primer,15,Transcript_2,1285,0.902197,-9.73,-8.8278,(0-14:1273-1259) 
+18,Test_Primer,15,Transcript_2,1285,0.954797,-9.73,-8.7752,(0-14:1272-1258) 
+19,Test_Primer,15,Transcript_2,1285,1.00572,-9.73,-8.72428,(0-14:1271-1257) 
+20,Test_Primer,15,Transcript_2,1285,1.05547,-9.73,-8.67453,(0-14:1270-1256) 
+21,Test_Primer,15,Transcript_2,1285,1.1081,-9.73,-8.6219,(0-14:1269-1255) 
+22,Test_Primer,15,Transcript_2,1285,1.16012,-9.73,-8.56988,(0-14:1268-1254) 
+23,Test_Primer,15,Transcript_2,1285,1.21706,-9.73,-8.51294,(0-14:1267-1253) 
+24,Test_Primer,15,Transcript_2,1285,1.26811,-9.73,-8.46189,(0-14:1266-1252) 
+25,Test_Primer,15,Transcript_2,1285,1.3178,-9.73,-8.4122,(0-14:1265-1251) 
+26,Test_Primer,15,Transcript_2,1285,1.38695,-9.73,-8.34305,(0-14:1264-1250) 
+27,Test_Primer,15,Transcript_2,1285,1.40247,-9.73,-8.32753,(0-14:1263-1249) 
+28,Test_Primer,15,Transcript_2,1285,1.38231,-9.73,-8.34769,(0-14:1262-1248) 
+29,Test_Primer,15,Transcript_2,1285,1.34893,-9.73,-8.38107,(0-14:1261-1247) 
+30,Test_Primer,15,Transcript_2,1285,1.30604,-9.73,-8.42396,(0-14:1260-1246) 
+31,Test_Primer,15,Transcript_2,1285,1.25994,-9.73,-8.47006,(0-14:1259-1245) 
+32,Test_Primer,15,Transcript_2,1285,1.20881,-9.76,-8.55119,(0-14:1258-1244) 
+33,Test_Primer,15,Transcript_2,1285,1.63873,-9.91,-8.27127,(0-14:674-660) 
diff --git a/primingsitepredictor/test/__init__.py b/primingsitepredictor/test/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/primingsitepredictor/test/output_transcripts_df.GTF b/primingsitepredictor/test/output_transcripts_df.GTF
new file mode 100644
index 0000000000000000000000000000000000000000..89ba6f367701e787b727d3602c241853c88d61d8
--- /dev/null
+++ b/primingsitepredictor/test/output_transcripts_df.GTF
@@ -0,0 +1,33 @@
+Transcript_1	RIBlast	Priming_site	2974	2988	.	+	.	Interaction_Energy "0.01341899394212988"
+Transcript_1	RIBlast	Priming_site	4	18	.	+	.	Interaction_Energy "0.029617468622161858"
+Transcript_1	RIBlast	Priming_site	3	17	.	+	.	Interaction_Energy "0.033652793432239245"
+Transcript_1	RIBlast	Priming_site	2	16	.	+	.	Interaction_Energy "0.0436763978338453"
+Transcript_1	RIBlast	Priming_site	1	15	.	+	.	Interaction_Energy "0.07361927731913716"
+Transcript_1	RIBlast	Priming_site	0	14	.	+	.	Interaction_Energy "0.07913386517826602"
+Transcript_2	RIBlast	Priming_site	1270	1284	.	+	.	Interaction_Energy "0.023871738821072214"
+Transcript_2	RIBlast	Priming_site	1269	1283	.	+	.	Interaction_Energy "0.021998205780680843"
+Transcript_2	RIBlast	Priming_site	1268	1282	.	+	.	Interaction_Energy "0.02017380792576395"
+Transcript_2	RIBlast	Priming_site	1267	1281	.	+	.	Interaction_Energy "0.018400390375292373"
+Transcript_2	RIBlast	Priming_site	1266	1280	.	+	.	Interaction_Energy "0.016661952134191884"
+Transcript_2	RIBlast	Priming_site	1265	1279	.	+	.	Interaction_Energy "0.015028790572682043"
+Transcript_2	RIBlast	Priming_site	1264	1278	.	+	.	Interaction_Energy "0.013507972357530618"
+Transcript_2	RIBlast	Priming_site	1263	1277	.	+	.	Interaction_Energy "0.012121303370956734"
+Transcript_2	RIBlast	Priming_site	1262	1276	.	+	.	Interaction_Energy "0.0108940605154748"
+Transcript_2	RIBlast	Priming_site	1261	1275	.	+	.	Interaction_Energy "0.009818208415333858"
+Transcript_2	RIBlast	Priming_site	1260	1274	.	+	.	Interaction_Energy "0.008876574189642966"
+Transcript_2	RIBlast	Priming_site	1259	1273	.	+	.	Interaction_Energy "0.00807212607564225"
+Transcript_2	RIBlast	Priming_site	1258	1272	.	+	.	Interaction_Energy "0.007386053280385996"
+Transcript_2	RIBlast	Priming_site	1257	1271	.	+	.	Interaction_Energy "0.006777457533826199"
+Transcript_2	RIBlast	Priming_site	1256	1270	.	+	.	Interaction_Energy "0.006231339626935633"
+Transcript_2	RIBlast	Priming_site	1255	1269	.	+	.	Interaction_Energy "0.005701431631106869"
+Transcript_2	RIBlast	Priming_site	1254	1268	.	+	.	Interaction_Energy "0.005221962850186007"
+Transcript_2	RIBlast	Priming_site	1253	1267	.	+	.	Interaction_Energy "0.004743243630707861"
+Transcript_2	RIBlast	Priming_site	1252	1266	.	+	.	Interaction_Energy "0.0043514767009977685"
+Transcript_2	RIBlast	Priming_site	1251	1265	.	+	.	Interaction_Energy "0.004001246269203596"
+Transcript_2	RIBlast	Priming_site	1250	1264	.	+	.	Interaction_Energy "0.0035602658910861193"
+Transcript_2	RIBlast	Priming_site	1249	1263	.	+	.	Interaction_Energy "0.0034681706680775195"
+Transcript_2	RIBlast	Priming_site	1248	1262	.	+	.	Interaction_Energy "0.003588271464203091"
+Transcript_2	RIBlast	Priming_site	1247	1261	.	+	.	Interaction_Energy "0.0037963420302257692"
+Transcript_2	RIBlast	Priming_site	1246	1260	.	+	.	Interaction_Energy "0.004081499678888505"
+Transcript_2	RIBlast	Priming_site	1245	1259	.	+	.	Interaction_Energy "0.004411927146940477"
+Transcript_2	RIBlast	Priming_site	1244	1258	.	+	.	Interaction_Energy "0.00480978620121743"
diff --git a/primingsitepredictor/test/output_transcripts_df.txt b/primingsitepredictor/test/output_transcripts_df.txt
new file mode 100644
index 0000000000000000000000000000000000000000..89ba6f367701e787b727d3602c241853c88d61d8
--- /dev/null
+++ b/primingsitepredictor/test/output_transcripts_df.txt
@@ -0,0 +1,33 @@
+Transcript_1	RIBlast	Priming_site	2974	2988	.	+	.	Interaction_Energy "0.01341899394212988"
+Transcript_1	RIBlast	Priming_site	4	18	.	+	.	Interaction_Energy "0.029617468622161858"
+Transcript_1	RIBlast	Priming_site	3	17	.	+	.	Interaction_Energy "0.033652793432239245"
+Transcript_1	RIBlast	Priming_site	2	16	.	+	.	Interaction_Energy "0.0436763978338453"
+Transcript_1	RIBlast	Priming_site	1	15	.	+	.	Interaction_Energy "0.07361927731913716"
+Transcript_1	RIBlast	Priming_site	0	14	.	+	.	Interaction_Energy "0.07913386517826602"
+Transcript_2	RIBlast	Priming_site	1270	1284	.	+	.	Interaction_Energy "0.023871738821072214"
+Transcript_2	RIBlast	Priming_site	1269	1283	.	+	.	Interaction_Energy "0.021998205780680843"
+Transcript_2	RIBlast	Priming_site	1268	1282	.	+	.	Interaction_Energy "0.02017380792576395"
+Transcript_2	RIBlast	Priming_site	1267	1281	.	+	.	Interaction_Energy "0.018400390375292373"
+Transcript_2	RIBlast	Priming_site	1266	1280	.	+	.	Interaction_Energy "0.016661952134191884"
+Transcript_2	RIBlast	Priming_site	1265	1279	.	+	.	Interaction_Energy "0.015028790572682043"
+Transcript_2	RIBlast	Priming_site	1264	1278	.	+	.	Interaction_Energy "0.013507972357530618"
+Transcript_2	RIBlast	Priming_site	1263	1277	.	+	.	Interaction_Energy "0.012121303370956734"
+Transcript_2	RIBlast	Priming_site	1262	1276	.	+	.	Interaction_Energy "0.0108940605154748"
+Transcript_2	RIBlast	Priming_site	1261	1275	.	+	.	Interaction_Energy "0.009818208415333858"
+Transcript_2	RIBlast	Priming_site	1260	1274	.	+	.	Interaction_Energy "0.008876574189642966"
+Transcript_2	RIBlast	Priming_site	1259	1273	.	+	.	Interaction_Energy "0.00807212607564225"
+Transcript_2	RIBlast	Priming_site	1258	1272	.	+	.	Interaction_Energy "0.007386053280385996"
+Transcript_2	RIBlast	Priming_site	1257	1271	.	+	.	Interaction_Energy "0.006777457533826199"
+Transcript_2	RIBlast	Priming_site	1256	1270	.	+	.	Interaction_Energy "0.006231339626935633"
+Transcript_2	RIBlast	Priming_site	1255	1269	.	+	.	Interaction_Energy "0.005701431631106869"
+Transcript_2	RIBlast	Priming_site	1254	1268	.	+	.	Interaction_Energy "0.005221962850186007"
+Transcript_2	RIBlast	Priming_site	1253	1267	.	+	.	Interaction_Energy "0.004743243630707861"
+Transcript_2	RIBlast	Priming_site	1252	1266	.	+	.	Interaction_Energy "0.0043514767009977685"
+Transcript_2	RIBlast	Priming_site	1251	1265	.	+	.	Interaction_Energy "0.004001246269203596"
+Transcript_2	RIBlast	Priming_site	1250	1264	.	+	.	Interaction_Energy "0.0035602658910861193"
+Transcript_2	RIBlast	Priming_site	1249	1263	.	+	.	Interaction_Energy "0.0034681706680775195"
+Transcript_2	RIBlast	Priming_site	1248	1262	.	+	.	Interaction_Energy "0.003588271464203091"
+Transcript_2	RIBlast	Priming_site	1247	1261	.	+	.	Interaction_Energy "0.0037963420302257692"
+Transcript_2	RIBlast	Priming_site	1246	1260	.	+	.	Interaction_Energy "0.004081499678888505"
+Transcript_2	RIBlast	Priming_site	1245	1259	.	+	.	Interaction_Energy "0.004411927146940477"
+Transcript_2	RIBlast	Priming_site	1244	1258	.	+	.	Interaction_Energy "0.00480978620121743"
diff --git a/primingsitepredictor/test/primer1.fasta b/primingsitepredictor/test/primer1.fasta
new file mode 100644
index 0000000000000000000000000000000000000000..251777b9e4a409e7bb32d851b7bee98032bd3d6c
--- /dev/null
+++ b/primingsitepredictor/test/primer1.fasta
@@ -0,0 +1,2 @@
+<primer1
+TTTTTTTTTTTTTTT
diff --git a/primingsitepredictor/test/test_cli.py b/primingsitepredictor/test/test_cli.py
new file mode 100644
index 0000000000000000000000000000000000000000..dec66a1765914a96fbb354b33bcbbd07694833a7
--- /dev/null
+++ b/primingsitepredictor/test/test_cli.py
@@ -0,0 +1,103 @@
+"""
+Created on Tue Dec 20 14:06:20 2022
+
+@author: RobinC
+"""
+
+# Imports
+import os, sys
+import pytest
+currentdir = os.path.dirname(os.path.realpath(__file__))
+parentdir = os.path.dirname(currentdir)
+sys.path.append(parentdir)
+import createprimer as cp
+import unittest
+import cli
+import argparse
+import pytest
+from unittest.mock import patch
+from unittest.mock import Mock
+import io
+import sys
+
+class TestCli(unittest.TestCase):
+
+    def test_import(self):
+        """Test function for module imports"""
+        try:
+            import argparse
+        except ImportError:
+            self.fail("Failed to import argparse")
+
+        try:
+            import logging
+        except ImportError:
+            self.fail("Failed to import logging")
+
+        try:
+            import main
+        except ImportError:
+            self.fail("Failed to import main")
+
+
+
+    def test_create_parser(self):
+
+        # Test parsing a float number
+        float_num = 3.14
+        float_str = str(float_num)
+        self.assertEqual(float_num, cli.CLI.create_parser(['--float', float_str]))
+
+        # Test parsing a float number with leading and trailing whitespace
+        float_num = 3.14
+        float_str = "  " + str(float_num) + "  "
+        self.assertEqual(float_num, cli.CLI.create_parser(['--float', float_str]))
+
+        # Test parsing a float number with a decimal point and no digits after it
+        float_num = 3.
+        float_str = str(float_num)
+        self.assertEqual(float_num, cli.CLI.create_parser(['--float', float_str]))
+
+        # Test parsing a float number with a decimal point and multiple digits after it
+        float_num = 3.14159
+        float_str = str(float_num)
+        self.assertEqual(float_num, cli.CLI.create_parser(['--float', float_str]))
+
+        # Test parsing a negative float number
+        float_num = -3.14
+        float_str = str(float_num)
+        self.assertEqual(float_num, cli.CLI.create_parser(['--float', float_str]))
+
+    def test_invalid_create_parser(self):
+
+        # Test parsing a float number with a letter in it
+        args = ['--float', '3.14a']
+        with self.assertRaises(SystemExit):
+            cli.CLI.create_parser(args)
+
+        # Test parsing a float number with multiple decimal points
+        args = ['--float', '3.14.159']
+        with self.assertRaises(SystemExit):
+            cli.CLI.create_parser(args)
+
+    def test_letsgo(self):
+
+        # Test printing a float number
+        float_num = 3.14
+        float_str = str(float_num)
+        with self.assertLogs('', level='INFO') as cm:
+            cli.CLI.letsgo(['--float', float_str])
+        self.assertEqual(cm.output, [f'INFO:root:Your energy cutoff is {float_num}'])
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/primingsitepredictor/test/test_createprimer.py b/primingsitepredictor/test/test_createprimer.py
new file mode 100644
index 0000000000000000000000000000000000000000..a54ad9c01245b741d89346851b1b3a7c76ff726d
--- /dev/null
+++ b/primingsitepredictor/test/test_createprimer.py
@@ -0,0 +1,71 @@
+"""
+Created on Tue Dec 20 14:06:20 2022
+
+@author: RobinC
+"""
+
+import os, sys
+import pytest
+currentdir = os.path.dirname(os.path.realpath(__file__))
+parentdir = os.path.dirname(currentdir)
+sys.path.append(parentdir)
+import createprimer as cp
+import unittest
+
+
+class TestCreatePrimer(unittest.TestCase):
+
+    def test_init(self):
+        """Test function for the  __init__() method"""
+
+        # Test default values
+        primer = cp.CreatePrimer()
+        self.assertEqual(primer.name, 'primer1')
+        self.assertEqual(primer.primer_length, 15)
+        self.assertEqual(primer.primer_sequence, 'T'*15)
+        self.assertEqual(primer.lines, ['<primer1', 'TTTTTTTTTTTTTTT'])
+
+        # Test custom values
+        primer = cp.CreatePrimer('my_primer', 20)
+        self.assertEqual(primer.name, 'my_primer')
+        self.assertEqual(primer.primer_length, 20)
+        self.assertEqual(primer.primer_sequence, 'T'*20)
+        self.assertEqual(primer.lines, ['<my_primer', 'TTTTTTTTTTTTTTTTTTTT'])
+
+
+    def test_create_fasta(self):
+        """Test function for the  test_create_fasta() method"""
+
+        # Test default values
+        primer = cp.CreatePrimer()
+        primer.create_fasta()
+        with open('primer1.fasta', 'r') as f:
+            lines = f.readlines()
+        self.assertEqual(lines, ['<primer1\n', 'TTTTTTTTTTTTTTT\n'])
+
+        # Test custom values
+        primer = cp.CreatePrimer('my_primer', 20)
+        primer.create_fasta()
+        with open('my_primer.fasta', 'r') as f:
+            lines = f.readlines()
+        self.assertEqual(lines, ['<my_primer\n', 'TTTTTTTTTTTTTTTTTTTT\n'])
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/primingsitepredictor/test/test_fasta.fasta b/primingsitepredictor/test/test_fasta.fasta
new file mode 100644
index 0000000000000000000000000000000000000000..5b85943f52a87f58f84c34e9c994e97c2f5a4e9a
--- /dev/null
+++ b/primingsitepredictor/test/test_fasta.fasta
@@ -0,0 +1,2 @@
+ATGC
+CAGT
diff --git a/primingsitepredictor/test/test_main.py b/primingsitepredictor/test/test_main.py
new file mode 100644
index 0000000000000000000000000000000000000000..1ac3d3c6f6f77b3a7945be939347c7536357d633
--- /dev/null
+++ b/primingsitepredictor/test/test_main.py
@@ -0,0 +1,93 @@
+"""
+Created on Tue Dec 20 14:06:20 2022
+
+@author: RobinC
+"""
+
+# Imports
+import os, sys
+currentdir = os.path.dirname(os.path.realpath(__file__))
+parentdir = os.path.dirname(currentdir)
+sys.path.append(parentdir)
+import unittest
+import main as mn
+import createprimer as cp
+import postprocessing as pp
+from io import StringIO
+
+class TestMain(unittest.TestCase):
+
+    def test_import(self):
+        """Test function for module imports"""
+        try:
+            import CreatePrimer
+        except ImportError:
+            self.fail("Failed to import CreatePrimer")
+
+        try:
+            import PostProcessRIBlast
+        except ImportError:
+            self.fail("Failed to import PostProcessRIBlast")
+
+    def test_generate_RIBlast_input(self):
+        """Test funciton for the method generate_RIBlast_input()"""
+
+        # Call the CreatePrimer() method and the create_fasta() method
+        primer = cp.CreatePrimer()
+        primer.create_fasta()
+
+        # get the name and the transcript filename
+        primer_filename = primer.name+".fasta"
+        transcript_filename = "transcripts.fasta"
+
+        # Call the generate_RIBlast_input() method
+        result = mn.generate_RIBlast_input()
+
+        assert result == [primer_filename, transcript_filename]
+
+
+    def test_create_gtf(self):
+        """Test funciton for the method create_gtf()"""
+
+        # Call the output of the PostprocessRIBlast() method
+        result = pp.PostProcessRIBlast().output
+
+        # Open the expected output
+        with open('output_transcripts_df.txt', 'r') as f:
+            expected_output = f.read()
+
+        # Use an assertion to check the output result
+        assert result == expected_output
+
+        # Capture the output of the print statement
+        captured_output = StringIO()
+        sys.stdout = captured_output
+
+        # Call the function that contains the print statement
+        mn.create_gtf()
+
+        # Check the captured output against the expected value
+        assert captured_output.getvalue().strip() == expected_output
+
+
+    def test_main(self):
+        """Test function for the method main()"""
+
+        # Call the CreatePrimer() method and the create_fasta() method
+        primer = cp.CreatePrimer()
+        primer.create_fasta()
+
+        # get the name and the transcript filename
+        primer_filename = primer.name+".fasta"
+        transcripts_filename = "transcripts.fasta"
+
+        # Get the results for the called methods
+        result1 = mn.generate_RIBlast_input()
+        result2 = mn.create_gtf()
+
+        # Open the expected output
+        with open('output_transcripts_df.txt', 'r') as f:
+            expected_output = f.read()
+
+        assert result1 == [primer_filename, transcripts_filename]
+        assert result2 == expected_output
diff --git a/primingsitepredictor/test/test_postprocessing.py b/primingsitepredictor/test/test_postprocessing.py
new file mode 100644
index 0000000000000000000000000000000000000000..2948ef269fe44e369cd619e63ab930608e03dc8e
--- /dev/null
+++ b/primingsitepredictor/test/test_postprocessing.py
@@ -0,0 +1,157 @@
+"""
+Created on Tue Dec 20 14:06:20 2022
+
+@author: RobinC
+"""
+
+# Imports
+import os, sys
+import pytest
+
+currentdir = os.path.dirname(os.path.realpath(__file__))
+parentdir = os.path.dirname(currentdir)
+sys.path.append(parentdir)
+import postprocessing as pp
+import unittest
+import math
+from unittest import mock
+
+
+class TestPostProcessRIBlast(unittest.TestCase):
+    def test_import(self):
+        """Test function for module imports"""
+        try:
+            import pandas
+        except ImportError:
+            self.fail("Failed to import pandas")
+
+        try:
+            import math
+        except ImportError:
+            self.fail("Failed to import math")
+
+    def setUp(self):
+        """Setup function to create an instance of PostProcessRIBlast()"""
+
+        self.post_processor = pp.PostProcessRIBlast()
+
+    def test_init(self):
+        """Test function for the __init__() method"""
+
+        # Test if generate_gtf method is being called
+        with unittest.mock.patch.object(
+            pp.PostProcessRIBlast, "generate_gtf"
+        ) as mock_generate_gtf:
+            pp.PostProcessRIBlast()
+            mock_generate_gtf.assert_called_once()
+
+        # Test if generate_gtf returns the expected output
+        expected_output = (
+            'Transcript_1\tRIBlast\tPriming_site\t2974[3257 chars]3"\n'
+        )
+        self.assertEqual(self.post_processor.generate_gtf(), expected_output)
+
+    def test_calculate_energy(self):
+        """Test function for the calculate_energy() method"""
+
+        def calculate_energy(value):
+            energy_constant = 1.380649*10**(-23)*298
+            kcalmol_joul = 6.9477*10**-21
+            return (math.exp(-float(value)*kcalmol_joul/energy_constant))
+
+        # set a decimal place
+        decimalPlace = 20
+
+        # Test for a positive value
+        self.testinstance = pp.PostProcessRIBlast.calculate_energy(self, 5.0)
+        expected_output = calculate_energy(5.0)
+        self.assertAlmostEqual(self.testinstance, expected_output, decimalPlace)
+
+
+        # Test for a negative value
+        self.testinstance = pp.PostProcessRIBlast.calculate_energy(self, -5.0)
+        expected_output = calculate_energy(-5.0)
+        self.assertAlmostEqual(self.testinstance, expected_output, decimalPlace)
+
+        # Test for zero
+        self.testinstance = pp.PostProcessRIBlast.calculate_energy(self, 0)
+        expected_output = calculate_energy(0)
+        self.assertAlmostEqual(self.testinstance, expected_output, decimalPlace)
+
+
+    def test_create_list_from_output(self):
+        """Test function for the create_list_from_output() method"""
+
+        #create an instance test of the class PostProcessRIBlast()
+        test = pp.PostProcessRIBlast()
+        test.file = "RIBlast output example.txt"
+
+        with open('RIBlast output example.txt', 'r') as file:
+            data_list = file.readlines()
+
+        # Remove the header
+        data_list = data_list[3:]
+
+        # Convert each row of the list into a list of values
+        expected_output = []
+        for row in data_list:
+            # Split the row by the comma character
+            values = row.strip().split(',')
+            # Append the list of values to the final list
+            expected_output.append(values)
+        return expected_output
+        self.assertEqual(test.create_list_from_output(), expected_output)
+
+
+    def test_create_pandas_df(self):
+        """Test function for the create_pandas_df() method with mock data"""
+
+        # create a test instance
+        test_instance = pp.PostProcessRIBlast()
+
+        # create some mock data for the input list
+        test_instance.interaction_list= [
+                                ['Id','Query name', 'Query Length', 'Target name', 'Target Length', 'Accessibility Energy', 'Hybridization Energy', 'Interaction Energy', 'BasePair'],
+                                [0,'Test_Primer',15,'Transcript_1',3233,1.49191,-9.76,-8.26809,'(0-14:2988-2974)'],
+                                [1,'Test_Primer',15,'Transcript_1',3233,1.02308,-9.76,-8.73692,'(0-14:18-4)'],
+                                [2,'Test_Primer',15,'Transcript_1',3233,0.947439,-9.73,-8.78256,'(0-14:17-3)'],
+                                [3,'Test_Primer',15,'Transcript_1',3233,0.793049,-9.73,-8.93695,'(0-14:16-2)'],
+                                [4,'Test_Primer',15,'Transcript_1',3233,0.483869,-9.73,-9.24613,'(0-14:15-1)'],
+                                [5,'Test_Primer',15,'Transcript_1',3233,0.441093,-9.17,-8.72891,'(0-14:14-0)']]
+
+        # create the DataFrame using the mock data
+        df = test_instance.create_pandas_df()
+
+        #self.assertEqual(len(df),7)
+
+        # check that the DataFrame has the expected column names
+        #self.assertEqual(list(df.columns), ['Id','Query name', 'Query Length', 'Target name', 'Target Length', 'Accessibility Energy', 'Hybridization Energy', 'Interaction Energy', 'BasePair'])
+
+        # check that the values in the 'Id' column are correct
+        self.assertEqual(list(df['Id']), ['Id',0,1,2,3,4,5])
+
+        # check that the values in the 'Query name' column are correct
+        self.assertEqual(list(df['Query name']), ['Query name','Test_Primer','Test_Primer','Test_Primer','Test_Primer','Test_Primer','Test_Primer'])
+
+        # check that the values in the 'Query Length' column are correct
+        self.assertEqual(list(df['Query Length']), ['Query Length',15, 15, 15, 15, 15, 15])
+
+        # check that the values in the 'Target name' column are correct
+        self.assertEqual(list(df['Target name']), ['Target name','Transcript_1','Transcript_1','Transcript_1','Transcript_1','Transcript_1','Transcript_1'])
+
+        # check that the values in the 'Target Length' column are correct
+        self.assertEqual(list(df['Target Length']), ['Target Length', 3233, 3233, 3233, 3233, 3233, 3233])
+
+        # check that the values in the 'Accessibility Energy' column are correct
+        self.assertEqual(list(df['Accessibility Energy']), ['Accessibility Energy',1.49191, 1.02308, 0.947439, 0.793049, 0.483869, 0.441093])
+
+        # check that the values in the 'Hybridization Energy' column are correct
+        self.assertEqual(list(df['Hybridization Energy']), ['Hybridization Energy',-9.76, -9.76, -9.73, -9.73, -9.73, -9.17])
+
+        # check that the values in the 'Interaction Energy' column are correct
+        self.assertEqual(list(df['Interaction Energy']), ['Interaction Energy',-8.26809, -8.73692, -8.78256, -8.93695, -9.24613, -8.72891])
+
+        # check that the values in the 'BasePair' column are correct
+        self.assertEqual(list(df['BasePair']), ['BasePair','(0-14:2988-2974)', '(0-14:18-4)', '(0-14:17-3)', '(0-14:16-2)', '(0-14:15-1)', '(0-14:14-0)'])
+
+
diff --git a/primingsitepredictor/test_fasta.fasta b/primingsitepredictor/test_fasta.fasta
new file mode 100644
index 0000000000000000000000000000000000000000..5b85943f52a87f58f84c34e9c994e97c2f5a4e9a
--- /dev/null
+++ b/primingsitepredictor/test_fasta.fasta
@@ -0,0 +1,2 @@
+ATGC
+CAGT