import string """Import string is nodig om de newlines (\n) eruit te kunnen halen.""" class SNPDetector: """ Aanmaken van de klasse SNPDetector.""" def __init__(self, file): self.file = file self.lines = [] self.linesList = [] self.snpPositions = {} """Hier wordt de file (test_data), de twee""" """lege lijsten en de dictionary vastgesteld.""" def readFile(self,filename): f = open(filename,'r') fRead = f.read() f.close() return fRead """De bestandsnaam wordt geopend om te lezen,""" """gekoppeld aan een string en direct daarna weer gesloten.""" def splitNewLines(self): self.lines = self.readFile(self.file).split("\n") return self.lines """Alle newlines worden uit het ingelezen bestand gehaald,""" """automatisch (door string.split) geconverteerd tot list.""" def comparePositions(self, possibleSnp=""): formattedLines = self.splitNewLines()[:-1] for i in range(len(formattedLines[0])): for line in formattedLines: if possibleSnp: if (len(possibleSnp) == 1): if line[i] != possibleSnp: possibleSnp += line[i] else: possibleSnp += line[i] if (len(possibleSnp) == 2): self.snpPositions[(i+1)] = possibleSnp possibleSnp = "" return self.snpPositions """Hier wordt elke nucleotide van de eerste sequentie vergeleken""" """met de op dezelfde positie liggende nucleotide van alle andere""" """sequenties. De nucleotide van de eerste sequentie wordt onthouden,""" """als deze NIET overeenkomt met een nucleotide in dezelfde rij""" """(andere sequenties), dan wordt deze SNP toegevoegd aan een dictionary""" """samen met de positie van de SNP.""" def sortPositions(self, output="", temp=""): output = "\tSNP Positie\t\tBase 1\t\t\tBase 2\n\n" for i in range(len(self.lines[0])): if self.snpPositions.has_key(i): temp = self.snpPositions[i] output += "\t"+str(i)+"\t\t\t"+temp[0].upper()+"\t\t\t"+temp[1].upper()+"\n" return output """Hier wordt de output gemaakt, de lengte van de sequentie wordt gemeten,""" """vervolgens gaat er een teller lopen van 0 tot aan de lengte van de sequentie (150)""" """elke keer dat de teller eentje omhoog gaat wordt gekeken of het nummer zich """ """ in de lijst van SNP posities bevind, zo ja, dan wordt deze aan de output""" """toegevoegd, die later in zijn geheel teruggeven wordt (dmv print wordt uitgeprint).""" filename = "test_data" snp = SNPDetector(filename) print "\nDetecting Single Nucleotide Polymorphisms and their positions...\n\n" snp.comparePositions() print snp.sortPositions()