def dataBalancer(contigdict, gff_name, gbk_name): """ Input: 3 contigdict, contig dictionary van merger. gff_name: bestandsnaam gbk_name: bestandsnaam De functie heeft eerst gebruik gemaakt van multi process, maar blijkt bij monitoring het toch niet nodig te hebben. De functie maakt een generator aan met de naam data. Vervolgens worden de loop variabelen data en stop gemaakt. In rij komt elke yield van data te staan. En stop is de boolean om de loop te stoppen als rij een None yield. De functie loopt op een while met als conditie dat de loop stopt als er geen regels meer in het bestand zitten. In de while loop wordt de resultaat lijst aangemaakt en de draden lijst. De draden lijst is voor de eerste for loop. In de eerste for loop wordt er 8 keer geloopt. Dit was voor de 8 cores, maar werkt serial ook erg goed. In de 8 for loop wordt er 100 duizend keer geloopt om data punten te yielden en toe te voegen aan de lijst draadlijst, tenzij er een None wordt geyield, dan wordt de loop afgesloten. De 8 multi dementionale lijsten worden na de vul loops 1 voor 1 doorgegven aan de functie lijst_gb_invoer, het resultaat daarvan wordt in de resultaat lijst gezet en wordt doorgegeven aan write_list zodat er 800k lines geschreven worden. """ print "start verdeel" print gff_name verdeelstat = Statistiek() data = open_gff(gff_name) rij = "" #declaratie voor while loop stop = False while rij != None: resultaat = [] draden = [] for x in range(8): draadlijst = [] for x in range(100000): rij = data.next() if rij == None: stop = True break else: draadlijst.append(rij) draden.append(draadlijst) if stop: break for draad in draden: resultaat.append(lijst_gb_invoer(draad, contigdict)) write_list(resultaat, gbk_name) verdeelstat.stop() print "einde verdeelstation"
def gff_conversie(gff_name, fasta_name, annot_file, gbk_name): #Functie hernoemd van main naar gff_conversie """ De functie roept de andere functies aan: het openen van de file, het maken van een multidimensionale lijst, het filteren van de attributen, het maken van de genbank file en het schrijven van de afsluitende tag // """ print "Merger maken" merger = Merger(fasta_name) refference(annot_file) print "Merger klaar" stopwatch = Statistiek() make_gbk_file(gbk_name) write_file('LOCUS PLACEHOLDER\n', gbk_name) write_file('FEATURES\t\tLocation/Qualifiers\n', gbk_name) write_file("PLACEHOLDER\n", gbk_name) print "GFF bestand openen" contigdict = merger.getdict() dataBalancer(contigdict, gff_name, gbk_name) print "Na verdeel" print "Bestand genereren" print "DO FASTA" # print merger.get_fasta() print "DONE FASTA" highest_stop = 10 lowest_start = 1 insert_values(highest_stop, lowest_start, 2, gbk_name) insert_values(highest_stop, "unspecified", 0, gbk_name) print "Sequentie schrijven" generate_fasta(fasta_name, gbk_name) ##write_file() sluiter = "//" write_file(sluiter, gbk_name) print "Klaar!" stopwatch.stop()
def dataBalancer(contigdict, gff_name, gbk_name): """ Input: 3 contigdict, contig dictionary van merger. gff_name: bestandsnaam gbk_name: bestandsnaam De functie heeft eerst gebruik gemaakt van multi process, maar blijkt bij monitoring het toch niet nodig te hebben. De functie maakt een generator aan met de naam data. Vervolgens worden de loop variabelen data en stop gemaakt. In rij komt elke yield van data te staan. En stop is de boolean om de loop te stoppen als rij een None yield. De functie loopt op een while met als conditie dat de loop stopt als er geen regels meer in het bestand zitten. In de while loop wordt de resultaat lijst aangemaakt en de draden lijst. De draden lijst is voor de eerste for loop. In de eerste for loop wordt er 8 keer geloopt. Dit was voor de 8 cores, maar werkt serial ook erg goed. In de 8 for loop wordt er 100 duizend keer geloopt om data punten te yielden en toe te voegen aan de lijst draadlijst, tenzij er een None wordt geyield, dan wordt de loop afgesloten. De 8 multi dementionale lijsten worden na de vul loops 1 voor 1 doorgegven aan de functie lijst_gb_invoer, het resultaat daarvan wordt in de resultaat lijst gezet en wordt doorgegeven aan write_list zodat er 800k lines geschreven worden. """ print "start verdeel" print gff_name verdeelstat = Statistiek() data = open_gff(gff_name) rij = "" #declaratie voor while loop stop = False while rij != None: resultaat = [] draden = [] for x in range(8): draadlijst = [] for x in range(100000): rij = data.next() if rij == None: stop = True break else: draadlijst.append(rij) draden.append(draadlijst) if stop: break for draad in draden: resultaat.append(lijst_gb_invoer(draad,contigdict)) write_list(resultaat, gbk_name) verdeelstat.stop() print "einde verdeelstation"