def scoreUpdate(self, **kw): print "-------------" print kw id = kw['id'] value = kw['value'] score = Score.get(int(id)) crit = score.criterion assessment = score.assessment category = crit.category score.value = value user = identity.current.user eh = EditHistory.selectBy(assessmentID=assessment.id, category=category) if eh.count() > 0: eh[0].editor = user.firstlast() eh[0].program = user.program.name else: EditHistory(assessmentID=assessment.id, category=category, editor=user.firstlast(), program=user.program.name) if crit.prefix in ['Y','Z']: st_crit = Criterion.selectBy(level=assessment.level, category=category, prefix="Z")[0] na_crit = Criterion.selectBy(level=assessment.level, category=category, prefix="Y")[0] possible = util.scorePossible(category, assessment.level) subtotal = Score.selectBy(criterionID=st_crit.id, assessmentID=assessment.id)[0].value na = Score.selectBy(criterionID=na_crit.id, assessmentID=assessment.id)[0].value return str(util.percent(subtotal,possible,na)) return dict()
def move_events(): db = DbStore() total = util.get_spotify_db().events.find().count() for i, event in enumerate(util.get_spotify_db().events.find()): if i % 100 == 0: print("Moving events {}%".format(util.percent(i, total))) db.add_event(event) db.commit()
def main(): trader_list = [ {'name': 'Tom', 'krw': 10000000, 'algo': 'random', 'currency': 'xrp'}, {'name': 'Ian', 'krw': 10000000, 'algo': 'type1', 'currency': 'xrp'}, {'name': 'JDY', 'krw': 10000000, 'algo': 'type2', 'currency': 'xrp'}, {'name': 'YKK', 'krw': 10000000, 'algo': 'type3', 'currency': 'xrp'}] traders = [Trader(x) for x in trader_list] for trader in traders: trader.think() price = price_gen(1000, 24*360*1000) queue = deque() # Collect for one day for _ in range(360*24): queue.append(int(next(price))) for i in price: queue.append(int(next(price))) queue.popleft() analytics = { 'price': queue[-1], 'change': { 'day': queue[-1] - queue[0], 'pc_day': percent(queue[0], queue[-1]), 'hour': queue[-1] - queue[-360], 'pc_hour' : percent(queue[-360], queue[-1]), '5min': queue[-1] - queue[-30], 'pc_5min': percent(queue[-30], queue[-1]) } } for trader in traders: trader.make_decesion(analytics) for trader in traders: trader.log('completed') ioloop.stop()
def main(): spotify = util.get_spotify_db() all = spotify.tracks.find({}) n = all.count() print("Processing {} docs".format(n)) i = 0 for track in all: i = i + 1 clean = clean_track(track["track"]) spotify.tracks.delete_one({"_id": track["_id"]}) track["track"] = clean spotify.tracks.insert(track) if i % 100 == 0: print("[{}%] done".format(util.percent(i, n)))
def create_image(time: str): """ Создает картинку с временем из строки полученной из параметра time. """ image = Image.new('RGB', (500, 500), color='white') W, H = image.size # ширина, высота фото draw = ImageDraw.Draw(image) clock_font = ImageFont.truetype(font='fonts/digital_num.ttf', size=215) progressbar_font = ImageFont.truetype(font='fonts/progressbar.ttf', size=22) percent_font = ImageFont.truetype(font='fonts/num.ttf', size=25) wt, ht = draw.textsize(time, font=clock_font) draw.text(((W - wt) / 2, ((H - ht) / 2) - 60), time, font=clock_font, fill='black') # write main clock in photo draw.text((6, 355), progressbar(time), font=progressbar_font, fill='black') # write progressbar in photo draw.text((410, 350), percent(time), font=percent_font, fill='black') # write percent in photo image.save("clock.png")
def compute_rcm_and_module_tree(blast_path, tree_path, tree_diagram_path, protLenDict, protNidDict, printProgress=True, progressHeader="", progressFooter=""): util.openfiles([tree_path, tree_diagram_path]) #print blast_path if os.path.exists(tree_path): processed = set() with open(tree_path) as f: for line in f: processed.add(line.split()[0]) tree_file_handle = open(tree_path, 'a') tree_diagram_file_handle = open(tree_diagram_path, 'a') else: processed = set() tree_file_handle = open(tree_path, 'w') tree_diagram_file_handle = open(tree_diagram_path, 'w') cnt = 0 with open(blast_path, 'r') as f: inputStr = f.read() # for blastxmlpath in os.listdir(eco_blast_brief_path): lines = inputStr.split("\n") numlines = len(lines) currentGi = 0 rcm = "" rcmNotNull = False # these varaiables will contain the output temporarily for speeding up the runtime # writeDia="" writeTre = "" hspsCount = 0 for i, line in enumerate(lines): if printProgress: util.percent(i, numlines, 50, header=progressHeader, footer=progressFooter) if len(line) > 0: # query_length=500 (query_gi, hsps) = parse_blast(line) # print query_gi # print protNidDict query_length = protLenDict[protNidDict[int(query_gi)]] testing = True if query_gi != None and hsps != None: # this is true if it passes through the filters in parse_blast n = query_length hspsCount += len(hsps) if currentGi != query_gi: # this is a new protein so make a new rcm if testing: outstring = "" for row in rcm: for entry in row: outstring += str(entry) + "," outstring += "\n" # with open("rcms.txt","a") as f: # f.write(outstring+"\n\n\n") # if(rcm!=""): if rcmNotNull: # print rcm # np.savetxt(os.path.join("rcmTest", str(currentGi)+'.csv'), rcm, delimiter=',', fmt='%d') tree_root = split_rcm(rcm) # if len(writeDia)>300: if len(writeTre) > 30000: # print len(writeDia) # tree_diagram_file_handle.write(writeDia) tree_diagram_file_handle.flush() tree_file_handle.write(writeTre) tree_file_handle.flush() writeTre = "" # writeDia="" # writeDia=writeDia+('%d (%d hsps)\n' % (cnt, hspsCount)) # writeDia=writeDia+('%s\n\n' % tree_root) hspsCount = 0 # print len(writeDia) writeTre = writeTre + adda_tree_string( currentGi, tree_root) rcm = np.zeros((n, n), dtype=np.int) rcmNotNull = True cnt += 1 currentGi = query_gi sum_l = 0 for hsp in hsps: sum_l += len(hsp.query_span) for i in xrange(hsp.query_span.start, hsp.query_span.end + 1): rcm[i - 1, range(hsp.query_span.start - 1, hsp.query_span.end)] += 1 # tree_diagram_file_handle.write('%d (%d hsps)\n' % (cnt, len(hsps))) # tree_diagram_file_handle.flush() # tree_diagram_file_handle.write('%s\n%s\n\n' % (gi, tree_root)) # os.fsync() tree_root = split_rcm(rcm) # writeDia=writeDia+('%s\n\n' % tree_root) writeTre = writeTre + adda_tree_string(currentGi, tree_root) # tree_diagram_file_handle.write(writeDia) tree_diagram_file_handle.flush() tree_file_handle.write(writeTre) tree_file_handle.flush()
def create_spreadsheet(finances: Finances, output_filepath: str): wb = Workbook() summaryws = wb.active # Create year summary tab period = finances.whole_finances summaryws.title = "Period Summary" summaryws.append(["Since", f"{str(period.cutoff_date)}"]) summaryws.append([]) summaryws.append(["Income", f"{USD(period.income.income_sum)}"]) summaryws.append(["Work Income", f"{USD(period.income.workincomesum)}"]) summaryws.append( ["Non-Work Income", f"{USD(period.income.nonworkincomesum)}"]) tab_append_top_trans(finances, summaryws, period.income.nonworkincome) summaryws.append([]) summaryws.append( ["Returns Income", f"{USD(period.income.returnsincomesum)}"]) summaryws.append(["Expenses", f"{USD(period.expense.expensessum)}"]) summaryws.append([]) summaryws.append( ["Gross Savings", f"{USD(period.gross_savings.amount_saved)}"]) summaryws.append([ "Gross Savings Percentage", f"{percent(period.gross_savings.saving_ratio)}" ]) summaryws.append([ "Gross Avg Monthly Savings", f"{USD(period.avg_monthly_savings.amount_saved)}" ]) summaryws.append([ f"Gross Avg Monthly Savings Goals for {period.period_in_months} months" ]) summaryws.append(["Goal", "Goal Amount", "Leftover"]) sav = finances.whole_finances.avg_monthly_savings for i in range(len(sav.savings_goals)): summaryws.append([ percent(sav.savings_goals[i]), USD(sav.savings_goal_amts[i]), USD(sav.savings_goal_leftover[i]) ]) summaryws.append([]) summaryws.append(["Investments", f"{USD(period.investments_sum)}"]) summaryws.append([]) summaryws.append(["Category", f"% of Expenses", "Amount"]) egc = period.expense.expensegroupcoll for eg_i in egc.group_sums_sorted[:20]: summaryws.append([ egc.group_keys[eg_i], percent(egc.group_percentages[eg_i]), USD(egc.group_sums[eg_i]) ]) summaryws.append([]) # Period Income tab tab = wb.create_sheet() tab.title = "Period Income" tab_append_data(finances, tab, period.income.income) # Period Work Income tab tab = wb.create_sheet() tab.title = "Period Work Income" tab_append_data(finances, tab, period.income.workincome) # Period Non-work Income tab tab = wb.create_sheet() tab.title = "Period Non-work Income" tab_append_data(finances, tab, period.income.nonworkincome) # Period Returns Income tab tab = wb.create_sheet() tab.title = "Period Returns Income" tab_append_data(finances, tab, period.income.returnsincome) # Period Expenses tab tab = wb.create_sheet() tab.title = "Period Expenses" tab_append_data(finances, tab, period.expense.expenses) # Period Investments tab tab = wb.create_sheet() tab.title = "Period Investments" tab_append_data(finances, tab, period.investments) # Monthly Tabs sorted_month_keys = sorted(finances.monthly_finances.keys(), reverse=True) for month_key in sorted_month_keys: month = finances.monthly_finances[month_key] # Month Summary tab = wb.create_sheet() tab.title = f"{str(month_key)} Summary" tab.append(["Income", USD(month.income.income_sum)]) tab.append(["Work Income", USD(month.income.workincomesum)]) tab_append_top_trans(finances, tab, month.income.workincome) tab.append([]) tab.append(["Returns Income", USD(month.income.returnsincomesum)]) tab.append(["Expenses", USD(month.expense.expensessum)]) tab.append(["Gross Savings", USD(month.savings.amount_saved)]) tab.append( ["Gross Savings Percentage", percent(month.savings.saving_ratio)]) tab.append(["Top expenses"]) tab_append_top_trans(finances, tab, month.expense.expenses, 10) tab.append([]) tab.append(["Top expense groups"]) egc = month.expense.expensegroupcoll for eg_i in egc.group_sums_sorted[:5]: tab.append([egc.group_keys[eg_i], USD(egc.group_sums[eg_i])]) # Month Data tab = wb.create_sheet() tab.title = f"{str(month_key)} Data" tab_append_data(finances, tab, month.source) # Ignored Transactions tab tab = wb.create_sheet() tab.title = "Ignored Transactions" tab_append_data(finances, tab, finances.ignored) # Source Data tab tab = wb.create_sheet() tab.title = "Period Source Data" tab_append_trans(tab, finances.source) wb.save(output_filepath)
def main(inputFilename, printProgress=True): # import configurations from the config file EvalueCutoff = conf.EvalueCutoff inputFolder = conf.blastAlltoAllInput processedFolder = conf.addaProcessedInput tableFolder = conf.proteinToNidTables nidListFolder = conf.nidListDir processedAppend = conf.addaAppend tableAppend = conf.tableAppend nidListAppend = conf.nidAppend # generate the output folders util.generateDirectoriesMult([tableFolder, nidListFolder, processedFolder, conf.NidToProteinTables]) inputFilenames = os.listdir(inputFolder) # for j, inputFilename in enumerate(inputFilenames): # the counter to determine which id we give to each of the protein names. # ADDA only uses id for proteins, not strings nidCounter = 1 # The dictionary that stores the information on which nids associate with which proteins # key:protein names (string) # val:nids (int) protToNid = {} # The dictionary that stores the information on which nids associate with which proteins # key:nids (int) # val:protein names (string) NidToProt = {} # initiate the filenames for generated files # fileRootReplace="."+inputFilename.split(".")[-1] fileRootReplace = conf.alltoallExt # find the file Directories processedDir = os.path.join(processedFolder, inputFilename.replace(fileRootReplace, processedAppend)) nidDir = os.path.join(nidListFolder, inputFilename.replace(fileRootReplace, nidListAppend)) tableDir = os.path.join(tableFolder, inputFilename.replace(fileRootReplace, tableAppend)) # open the files to clear the files util.openfiles([processedDir, tableDir, nidDir]) # read the inputfile read = "" with open(os.path.join(inputFolder, inputFilename.replace(conf.seqExt, conf.alltoallExt)), 'r') as f: read = f.read() lines = read.split("\n") numLines = len(lines) write = "" writeNid = "" # input file format: # 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 # query, subject, %id, alignlen, mismatch, gapopen, qst, qend, sst, send, Evalue, bitscore # output file format: # 0 1 2 3 4 5 6 7 8 # nid1 nid2 %id from1 to1 alignlen from2 to2 Evalue na na # header=str(j)+"/"+str(len(inputFilenames))+"\n" # footer="\n" for i, line in enumerate(lines): # print percent to keep progress if printProgress: util.percent(i, numLines, 25, percentRange=(0, 80)) inArr = line.split("\t") query = inArr[0] if query not in protToNid.keys(): nid1 = nidCounter protToNid[query] = nid1 NidToProt[nid1] = query writeLine = str(nidCounter) + "\t" + query + "\n" write = write + writeLine writeNid = writeNid + str(nidCounter) + "\n" # compile the writing in to memery so we can write it down in bulk (this saves runtime) if len(write) > 1000000: with open(tableDir, "a") as f: f.write(write) with open(nidDir, "a") as f: f.write(writeNid) nidCounter += 1 # write the left over string into the file with open(tableDir, "a") as f: f.write(write) with open(nidDir, "a") as f: f.write(writeNid) dictpath = os.path.join(conf.NidToProteinTables, inputFilename.replace(fileRootReplace, conf.NidToProteinAppend)) with open(dictpath, "wb") as f: dump(NidToProt, f) write = "" for i, line in enumerate(lines): if len(line) > 0: # print percent to keep progress if printProgress: util.percent(i, numLines, 5, percentRange=(80, 100)) inArr = line.split("\t") query = inArr[0] subject = inArr[1] identity = inArr[2] alignlen = inArr[3] from1 = inArr[6] to1 = inArr[7] from2 = inArr[8] to2 = inArr[9] Evalue = inArr[10] repeat = (query == subject and ((from1 == from2 and to1 == to2) or (from1 == to2 and to1 == from2))) if float(Evalue) < EvalueCutoff and repeat == False: nid1 = protToNid[query] nid2 = protToNid[subject] writeLine = str(nid1) + "\t" + str(nid2) + "\t" + str( identity) + "\t" + from1 + "\t" + to1 + "\t" + str( alignlen) + "\t" + from2 + "\t" + to2 + "\t" + str(Evalue) + "\t" + "na" + "\t" + "na" + "\n" if len(write) < 1000000000: write = write + writeLine else: with open(processedDir, "a") as f: write = write + writeLine f.write(write) write = "" with open(processedDir, "a") as f: f.write(write)
def do_custom(cutoff: int): finances: Finances = standard_compilation(cutoff) period_in_months = finances.whole_finances.period_in_months print(f"Past {cutoff} Months") table = [] headers = [ "Category", "Average Monthly Amount", f"% of Work Income", f"% of Expenses" ] work_income = abs(finances.whole_finances.income.workincomesum) avg_monthly_work_income = work_income / period_in_months expenses = abs(finances.whole_finances.expense.expensessum) avg_monthly_expenses = expenses / period_in_months rent_utilities_classes = ["Housing", "Utilities"] rent_utilities = filter( lambda t: t.classification in rent_utilities_classes, finances.source) avg_monthly_rent_utilites = sum(map(lambda t: abs(t.amt), rent_utilities)) / period_in_months rent_utilities_work_income_percent = avg_monthly_rent_utilites / avg_monthly_work_income rent_utilities_expenses_percent = avg_monthly_rent_utilites / avg_monthly_expenses table.append([ "Rent & Utilities", USD(avg_monthly_rent_utilites), percent(rent_utilities_work_income_percent), percent(rent_utilities_expenses_percent) ]) # print(f"Avg Monthly Rent & Utilities:\t{USD(avg_monthly_rent_utilites)}\t" # + f"% of Work Income:\t{percent(rent_utilities_work_income_percent)}\t" # + f"% of Expenses:\t{percent(rent_utilities_expenses_percent)}") transportation_classes = ["Transportation"] transportation = filter( lambda t: t.classification in transportation_classes, finances.source) avg_monthly_transportation = sum(map(lambda t: abs(t.amt), transportation)) / period_in_months transportation_work_income_percent = avg_monthly_transportation / avg_monthly_work_income transportation_expenses_percent = avg_monthly_transportation / avg_monthly_expenses table.append([ "Transportation", USD(avg_monthly_transportation), percent(transportation_work_income_percent), percent(transportation_expenses_percent) ]) # print(f"Avg Monthly Transportation:\t{USD(avg_monthly_transportation)}\t" # + f"% of Work Income:\t{percent(transportation_work_income_percent)}\t" # + f"% of Expenses:\t{percent(transportation_expenses_percent)}") groceries_cat_classes = ["Pet Expenses", "Groceries"] groceries_cat = filter(lambda t: t.classification in groceries_cat_classes, finances.source) avg_monthly_groceries_cat = sum(map(lambda t: abs(t.amt), groceries_cat)) / period_in_months groceries_cat_work_income_percent = avg_monthly_groceries_cat / avg_monthly_work_income groceries_cat_expenses_percent = avg_monthly_groceries_cat / avg_monthly_expenses table.append([ "Groceries & Cat Expenses", USD(avg_monthly_groceries_cat), percent(groceries_cat_work_income_percent), percent(groceries_cat_expenses_percent) ]) # print(f"Avg Monthly Groceries & Cat Expenses:\t{USD(avg_monthly_groceries_cat)}\t" # + f"% of Work Income:\t{percent(groceries_cat_work_income_percent)}\t" # + f"% of Expenses:\t{percent(groceries_cat_expenses_percent)}") print(tabulate.tabulate(table, headers=headers))
def index1(self, id=None, category=None, osep='None', print_area='false'): if identity.current.user.basketmode: raise redirect(url("index2",id=id,category=category,osep=osep,print_area=print_area)) osep = True if print_area == 'true': print_area = True else: print_area = False id = util.session('current_assessment', 0, id) category = util.session('current_category', 'Fine Motor', category) osep = util.session('osep', False, osep) child = util.session('current_child', 0) if id == 0: # no id given raise redirect("/") try: current_assessment = Assessment.get(id) except SQLObjectNotFound: # Child with given id does not exist raise redirect("/") current_child = current_assessment.child all_assessments = current_child.assessments sorted_assessments = Assessment.select(AND(Assessment.q.childID==current_assessment.childID, Assessment.q.id!=id, Assessment.q.level==current_assessment.level), orderBy='-dateEntered') old = list(sorted_assessments[:7]) if osep: criteria = Criterion.selectBy(category=category, level=current_assessment.level, osep=True) else: criteria = Criterion.selectBy(category=category, level=current_assessment.level) criteria = criteria.orderBy('sort_order') crit_ids = [c.id for c in criteria] sums = {} for t in old: sum = 0; for s in t.scores: if s.criterionID in crit_ids and s.criterion.rank != "1": try: sum += int(s.value) except: pass sums[t.id] = sum sum = 0; for s in current_assessment.scores: if s.criterionID in crit_ids and s.criterion.rank != "1": try: sum += int(s.value) except: pass sums[current_assessment.id] = sum util.session('fill', 'missing') if len(old) == 0: temp = util.session('values', 'zeros') if temp == 'previous': cherrypy.session['values'] = 'zeros' else: util.session('values', 'previous') subtotal = Criterion.selectBy(category=category, level=current_assessment.level, prefix='Z')[0] _na = Criterion.selectBy(category=category, level=current_assessment.level, prefix='Y')[0] oldtotals = {} oldna = {} percents = {} for t in old: stscore = Score.selectBy(assessmentID=t.id, criterionID=subtotal.id) if stscore.count() > 0: stscore = stscore[0] else: stscore = Score(assessmentID=t.id, criterionID=subtotal.id, value="0", type='subtotal') oldtotals[t.id] = stscore.value nascore = Score.selectBy(assessmentID=t.id, criterionID=_na.id) if nascore.count() > 0: nascore = nascore[0] else: nascore = Score(assessmentID=t.id, criterionID=_na.id, value="0", type='na') oldna[t.id] = nascore.value percents[t.id] = util.percent(stscore.value, util.scorePossible(category, current_assessment.level), nascore.value) stscore = Score.selectBy(assessmentID=id, criterionID=subtotal.id) nascore = Score.selectBy(assessmentID=id, criterionID=_na.id) if stscore.count() > 0: stscore = stscore[0] else: stscore = Score(assessmentID=id, criterionID=subtotal.id, value="0", type='subtotal') if nascore.count() > 0: nascore = nascore[0] else: nascore = Score(assessmentID=id, criterionID=_na.id, value="0", type='na') percent = util.percent(stscore.value, util.scorePossible(category, current_assessment.level), nascore.value) return dict(child=current_child, id=id, a=current_assessment, old=old, oldtotals=oldtotals, \ stc=subtotal, subtotal=stscore, criteria=criteria, osep=osep, sums=sums, \ catlist=self.category_list, category=category, nextCategory=self.nextCategory, \ print_area=print_area, getEditor=self.getEditor, pcheck=self.persistCheck, \ shaded=util.shaded, scoreclass=util.color, scorePossible=util.scorePossible, \ nac=_na, na=nascore, oldna=oldna, percents=percents, percent=percent)
def index2(self, id=None, category=None, osep='None', print_area='false'): if not identity.current.user.basketmode: raise redirect(url("index1",id=id,category=category,osep=osep,print_area=print_area)) osep = True if print_area == 'true': print_area = True else: print_area = False id = util.session('current_assessment', 0, id) child = util.session('current_child', 0) if id == 0: # no id given raise redirect("/") try: current_assessment = Assessment.get(id) except SQLObjectNotFound: # Child with given id does not exist raise redirect("/") current_child = current_assessment.child all_assessments = current_child.assessments sorted_assessments = Assessment.select(AND(Assessment.q.childID==current_assessment.childID, Assessment.q.id!=id, Assessment.q.level==current_assessment.level), orderBy='-dateEntered') old = list(sorted_assessments[:7]) categories = self.category_list data = {} for c in categories: cdata = {} subtotal = Criterion.selectBy(category=c, level=current_assessment.level, prefix='Z')[0] _na = Criterion.selectBy(category=c, level=current_assessment.level, prefix='Y')[0] cdata['subtotal'] = subtotal cdata['na'] = _na oldtotals = {} oldna = {} percents = {} for t in old: stscore = Score.selectBy(assessmentID=t.id, criterionID=subtotal.id) if stscore.count() > 0: stscore = stscore[0] else: stscore = Score(assessmentID=t.id, criterionID=subtotal.id, value="0", type='subtotal') oldtotals[t.id] = stscore.value nascore = Score.selectBy(assessmentID=t.id, criterionID=_na.id) if nascore.count() > 0: nascore = nascore[0] else: nascore = Score(assessmentID=t.id, criterionID=_na.id, value="0", type='na') oldna[t.id] = nascore.value percents[t.id] = util.percent(stscore.value, util.scorePossible(c, current_assessment.level), nascore.value) cdata['oldtotals'] = oldtotals cdata['oldna'] = oldna cdata['percents'] = percents stscore = Score.selectBy(assessmentID=id, criterionID=subtotal.id) nascore = Score.selectBy(assessmentID=id, criterionID=_na.id) if stscore.count() > 0: stscore = stscore[0] else: stscore = Score(assessmentID=id, criterionID=subtotal.id, value="0", type='subtotal') if nascore.count() > 0: nascore = nascore[0] else: nascore = Score(assessmentID=id, criterionID=_na.id, value="0", type='na') percent = util.percent(stscore.value, util.scorePossible(c, current_assessment.level), nascore.value) cdata['stscore'] = stscore cdata['nascore'] = nascore cdata['percent'] = percent data[c] = cdata baskets = [] for i in [1,2,3]: bdata = {} prefix = "B" + str(i) b = Criterion.selectBy(level=current_assessment.level, prefix=prefix)[0] oldb = {} for t in old: bscore = Score.selectBy(assessmentID=t.id, criterionID=b.id) if bscore.count() > 0: bscore = bscore[0] else: bscore = Score(assessmentID=t.id, criterionID=b.id, value="0", type='basket') oldb[t.id] = bscore bdata['old'] = oldb bscore = Score.selectBy(assessmentID=id, criterionID=b.id) if bscore.count() > 0: bscore = bscore[0] else: bscore = Score(assessmentID=id, criterionID=b.id, value="0", type='basket') bdata['val'] = bscore baskets.append(bdata) return dict(child=current_child, id=id, a=current_assessment, old=old, categories=categories, \ print_area=print_area, getEditor=self.getEditor, pcheck=self.persistCheck, \ shaded=util.shaded, scoreclass=util.color, scorePossible=util.scorePossible, \ data=data, baskets=baskets)
def processa_estados(): enf_uf, med_uf, hosp_uf, leitos_uf, uti_uf, uti_sus_uf, ibge_uf = util.read_uf_reg() # troca "-" pelo valor 0 nas celulas em que aparece util.dash_to_zero(enf_uf) util.dash_to_zero(med_uf) util.dash_to_zero(hosp_uf) util.dash_to_zero(leitos_uf) util.dash_to_zero(uti_uf) util.dash_to_zero(uti_sus_uf) # converte strings para valores numericos quando pertinente util.str_to_int(enf_uf) util.str_to_int(med_uf) util.str_to_int(hosp_uf) util.str_to_int(leitos_uf) util.str_to_int(uti_uf) util.str_to_int(uti_sus_uf) # retira linhas com informacoes desnecessarias util.drop(enf_uf, [-1, -1, -1]) util.drop(med_uf, [-1, -1, -1]) util.drop(hosp_uf, [-1, -1]) util.drop(leitos_uf, [-1, -1]) util.drop(uti_uf, [-1, -1]) util.drop(uti_sus_uf, [-1, -1, -1]) # cada bloco a seguir cria um atributo da tabela final nome = enf_uf["Região/Unidade da Federação"] # remove caracteres desnecessarios for i in range(len(nome)): nome[i] = nome[i].strip(". ") pop = [] for item in ibge_uf["EST_POP_19"]: pop.append(item) # adiciona populacoes de cada regiao pop.insert(0, sum(ibge_uf["EST_POP_19"][0:7])) # norte pop.insert(8, sum(ibge_uf["EST_POP_19"][7:16])) # nordeste pop.insert(18, sum(ibge_uf["EST_POP_19"][16:20])) # sudeste pop.insert(23, sum(ibge_uf["EST_POP_19"][20:23])) # sul pop.insert(27, sum(ibge_uf["EST_POP_19"][23:27])) # centro-oeste enf_sus = enf_uf["Sim"] enf_nsus = enf_uf["Não"] enf_total = enf_uf["Total"] enf_sus_percent = util.percent(enf_sus, enf_total) enf_10k = util.pop_ratio(enf_total, 10000, pop) med_sus = med_uf["Sim"] med_nsus = med_uf["Não"] med_total = med_uf["Total"] med_sus_percent = util.percent(med_sus, med_total) med_10k = util.pop_ratio(med_total, 10000, pop) hosp_publ = [] for i in range(len(hosp_uf)): hosp_publ.append(int(sum([hosp_uf["Administração Pública Federal"][i], hosp_uf["Administração Pública Estadual ou Distrito Federal"][i], hosp_uf["Administração Pública Municipal"][i], hosp_uf["Administração Pública - Outros"][i], hosp_uf["Empresa Pública ou Sociedade de Economia Mista"][i]]))) hosp_npubl = [] for i in range(len(hosp_uf)): hosp_npubl.append(int(sum([hosp_uf["Demais Entidades Empresariais"][i], hosp_uf["Entidades sem Fins Lucrativos"][i]]))) hosp_total = [] for i in range(len(hosp_uf)): hosp_total.append(int(hosp_publ[i] + hosp_npubl[i])) hosp_publ_percent = util.percent(hosp_publ, hosp_total) hosp_100k = util.pop_ratio(hosp_total, 100000, pop) leitos_sus = [] for i in range(len(leitos_uf)): leitos_sus.append(int(leitos_uf["Quantidade SUS"][i])) leitos_nsus = [] for i in range(len(leitos_uf)): leitos_nsus.append(int(leitos_uf["Quantidade Não SUS"][i])) leitos_total = [] for i in range(len(leitos_uf)): leitos_total.append(int(leitos_sus[i] + leitos_nsus[i])) leitos_sus_percent = util.percent(leitos_sus, leitos_total) leitos_10k = util.pop_ratio(leitos_total, 10000, pop) leitos_uti_total = [] for i in range(len(uti_uf)): leitos_uti_total.append(int(uti_uf["Total"][i])) leitos_uti_sus = uti_sus_uf["Total"] leitos_uti_nsus = [] for i in range(len(leitos_uti_total)): leitos_uti_nsus.append(int(leitos_uti_total[i] - leitos_uti_sus[i])) leitos_uti_sus_percent = util.percent(leitos_uti_sus, leitos_uti_total) leitos_uti_10k = util.pop_ratio(leitos_uti_total, 10000, pop) leitos_covid_total = [] for i in range(len(uti_uf)): leitos_covid_total.append(int(uti_uf["UTI adulto II COVID-19"][i] + uti_uf["UTI pediátrica II COVID-19"][i])) leitos_covid_sus = [] for i in range(len(uti_sus_uf)): leitos_covid_sus.append(int(uti_sus_uf["UTI adulto II COVID-19"][i] + uti_sus_uf["UTI pediátrica II COVID-19"][i])) leitos_covid_nsus = [] for i in range(len(leitos_covid_total)): leitos_covid_nsus.append(int(leitos_covid_total[i] - leitos_covid_sus[i])) leitos_covid_sus_percent = util.percent(leitos_covid_sus, leitos_covid_total) leitos_covid_10k = util.pop_ratio(leitos_covid_total, 10000, pop) # deficit ou excesso de profissionais de saude no estado ou regiao # em relacao a densidade populacional # considerando referencia oms (health workforce requirements, 2016) # recomendado = 44.5 medicos/enfs a cada 10k habitantes rel_prof_saude_recomend = [] recomend = 44.5 for i in range(len(enf_total)): med_e_enf_10k = med_10k[i] + enf_10k[i] dfca = med_e_enf_10k - recomend # valor pos indica excesso; valor neg indica deficit rel_prof_saude_recomend.append(round((dfca*pop[i])/10000, 2)) dados = {'Região ou UF': nome, 'População': pop, 'Enfermeiros SUS': enf_sus, 'Enfermeiros não-SUS': enf_nsus, 'Enfermeiros - Total': enf_total, '%' + ' de enfermeiros SUS': enf_sus_percent, 'Enfermeiros a cada 10k habitantes': enf_10k, 'Médicos SUS': med_sus, 'Médicos não-SUS': med_nsus, 'Médicos - Total': med_total, '%' + ' de médicos SUS': med_sus_percent, 'Médicos a cada 10k habitantes': med_10k, 'Déficit ou excesso de médicos/enfermeiros': rel_prof_saude_recomend, 'Hospitais públicos': hosp_publ, 'Hospitais não-públicos': hosp_npubl, 'Hospitais - Total': hosp_total, '%' + ' de hospitais públicos': hosp_publ_percent, 'Hospitais a cada 100k habitantes': hosp_100k, 'Leitos (internação) SUS': leitos_sus, 'Leitos (internação) não-SUS': leitos_nsus, 'Leitos (internação) - Total': leitos_total, '%' + ' de leitos (internação) SUS': leitos_sus_percent, 'Leitos (internação) a cada 10k habitantes': leitos_10k, 'Leitos UTI SUS': leitos_uti_sus, 'Leitos UTI não-SUS': leitos_uti_nsus, 'Leitos UTI - Total': leitos_uti_total, '%' + ' de leitos UTI SUS': leitos_uti_sus_percent, 'Leitos UTI a cada 10k habitantes': leitos_uti_10k, 'Leitos UTI COVID-19 SUS': leitos_covid_sus, 'Leitos UTI COVID-19 não-SUS': leitos_covid_nsus, 'Leitos UTI COVID-19 - Total': leitos_covid_total, '%' + ' de leitos UTI COVID-19 SUS': leitos_covid_sus_percent, 'Leitos UTI COVID-19 a cada 10k habitantes': leitos_covid_10k} df = pd.DataFrame(data=dados) util.write_to_csv(df, "Brasil - UFs e Regiões") stats.stats_estados(pd.read_csv("../data/processed/Brasil - UFs e Regiões.csv"))
def processa_municipios(): enf_mun, med_mun, hosp_mun, leitos_mun, uti_mun, uti_sus_mun, ibge_mun = util.read_mun() # troca "-" pelo valor 0 nas celulas em que aparece util.dash_to_zero(enf_mun) util.dash_to_zero(med_mun) util.dash_to_zero(hosp_mun) util.dash_to_zero(leitos_mun) util.dash_to_zero(uti_mun) util.dash_to_zero(uti_sus_mun) # converte strings para valores numericos quando pertinente util.str_to_int(enf_mun) util.str_to_int(med_mun) util.str_to_int(hosp_mun) util.str_to_int(leitos_mun) util.str_to_int(uti_mun) util.str_to_int(uti_sus_mun) # retira linhas com informacoes desnecessarias util.drop(enf_mun, [-1, -1, -1]) util.drop(med_mun, [-1, -1, -1]) util.drop(hosp_mun, [-1, -1, -1]) util.drop(leitos_mun, [-1, -1, -1]) util.drop(uti_mun, [-1, -1, -1]) util.drop(uti_sus_mun, [-1, -1, -1]) util.drop_mun(enf_mun) util.drop_mun(med_mun) util.drop_mun(hosp_mun) util.drop_mun(leitos_mun) util.drop_mun(uti_mun) util.drop_mun(uti_sus_mun) # adiciona informacao sobre sigla correspondente a cada codigo uf siglas_uf = util.cod_to_uf(ibge_mun) ibge_mun["NM_UF"] = siglas_uf # remove ultimo digito do codigo municipal do dataset do ibge # o objetivo eh igualar ao codigo municipal dos datasets do datasus for i in range(len(ibge_mun)): ibge_mun.at[i, "CD_MUN"] = ibge_mun["CD_MUN"][i]//10 # cada bloco a seguir cria um atributo da tabela final cod = [] for i in range(len(enf_mun)): cod.append(int(enf_mun["Município"][i][0:7])) # primeiros seis digitos nome = [] for i in range(len(enf_mun)): nome.append(enf_mun["Município"][i][7:]) # todos os digitos menos 7 primeiros (6 do codigo + espaco) pop = [] # insere na ordem dos datasets do datasus for i in range(len(cod)): # pop_cod = populacao registrada para a linha em que cd_mun == cod[i] pop_cod = ibge_mun["EST_POP_19"][ibge_mun["CD_MUN"] == cod[i]].iloc[0] pop.append(pop_cod) uf = [] # insere na ordem dos datasets do datasus for i in range(len(cod)): # uf_cod = sigla da uf registrada para a linha em que cd_mun == cod[i] uf_cod = ibge_mun["NM_UF"][ibge_mun["CD_MUN"] == cod[i]].iloc[0] uf.append(uf_cod) enf_sus = enf_mun["Sim"] enf_nsus = enf_mun["Não"] enf_total = enf_mun["Total"] enf_sus_percent = util.percent(enf_sus, enf_total) enf_10k = util.pop_ratio(enf_total, 10000, pop) med_sus = med_mun["Sim"] med_nsus = med_mun["Não"] med_total = med_mun["Total"] med_sus_percent = util.percent(med_sus, med_total) med_10k = util.pop_ratio(med_total, 10000, pop) hosp_publ = [] for i in range(len(hosp_mun)): hosp_publ.append(int(sum([hosp_mun["Administração Pública Federal"][i], hosp_mun["Administração Pública Estadual ou Distrito Federal"][i], hosp_mun["Administração Pública Municipal"][i], hosp_mun["Administração Pública - Outros"][i], hosp_mun["Empresa Pública ou Sociedade de Economia Mista"][i]]))) hosp_npubl = [] for i in range(len(hosp_mun)): hosp_npubl.append(int(sum([hosp_mun["Demais Entidades Empresariais"][i], hosp_mun["Entidades sem Fins Lucrativos"][i]]))) hosp_total = [] for i in range(len(hosp_mun)): hosp_total.append(int(hosp_publ[i] + hosp_npubl[i])) hosp_publ_percent = util.percent(hosp_publ, hosp_total) hosp_100k = util.pop_ratio(hosp_total, 100000, pop) leitos_sus = leitos_mun["Quantidade SUS"] leitos_nsus = leitos_mun["Quantidade Não SUS"] leitos_total = [] for i in range(len(leitos_mun)): leitos_total.append(int(leitos_sus[i] + leitos_nsus[i])) leitos_sus_percent = util.percent(leitos_sus, leitos_total) leitos_10k = util.pop_ratio(leitos_total, 10000, pop) leitos_uti_total = uti_mun["Total"] leitos_uti_sus = uti_sus_mun["Total"] leitos_uti_nsus = [] for i in range(len(leitos_uti_total)): leitos_uti_nsus.append(int(leitos_uti_total[i] - leitos_uti_sus[i])) leitos_uti_sus_percent = util.percent(leitos_uti_sus, leitos_uti_total) leitos_uti_10k = util.pop_ratio(leitos_uti_total, 10000, pop) leitos_covid_total = [] for i in range(len(uti_mun)): leitos_covid_total.append(int(uti_mun["UTI adulto II COVID-19"][i] + uti_mun["UTI pediátrica II COVID-19"][i])) leitos_covid_sus = [] for i in range(len(uti_sus_mun)): leitos_covid_sus.append(int(uti_sus_mun["UTI adulto II COVID-19"][i] + uti_sus_mun["UTI pediátrica II COVID-19"][i])) leitos_covid_nsus = [] for i in range(len(leitos_covid_total)): leitos_covid_nsus.append(int(leitos_covid_total[i] - leitos_covid_sus[i])) leitos_covid_sus_percent = util.percent(leitos_covid_sus, leitos_covid_total) leitos_covid_10k = util.pop_ratio(leitos_covid_total, 10000, pop) # deficit ou excesso de profissionais de saude no municipio # em relacao a densidade populacional # considerando referencia oms (health workforce requirements, 2016) # recomendado = 44.5 medicos/enfs a cada 10k habitantes rel_prof_saude_recomend = [] recomend = 44.5 for i in range(len(enf_total)): med_e_enf_10k = med_10k[i] + enf_10k[i] dfca = med_e_enf_10k - recomend # valor pos indica excesso; valor neg indica deficit rel_prof_saude_recomend.append(round((dfca*pop[i])/10000, 2)) dados = {'Código Municipal': cod, 'Município': nome, 'População': pop, 'UF': uf, 'Enfermeiros SUS': enf_sus, 'Enfermeiros não-SUS': enf_nsus, 'Enfermeiros - Total': enf_total, '%' + ' de enfermeiros SUS': enf_sus_percent, 'Enfermeiros a cada 10k habitantes': enf_10k, 'Médicos SUS': med_sus, 'Médicos não-SUS': med_nsus, 'Médicos - Total': med_total, '%' + ' de médicos SUS': med_sus_percent, 'Médicos a cada 10k habitantes': med_10k, 'Déficit ou excesso de médicos/enfermeiros': rel_prof_saude_recomend, 'Hospitais públicos': hosp_publ, 'Hospitais não-públicos': hosp_npubl, 'Hospitais - Total': hosp_total, '%' + ' de hospitais públicos': hosp_publ_percent, 'Hospitais a cada 100k habitantes': hosp_100k, 'Leitos (internação) SUS': leitos_sus, 'Leitos (internação) não-SUS': leitos_nsus, 'Leitos (internação) - Total': leitos_total, '%' + ' de leitos (internação) SUS': leitos_sus_percent, 'Leitos (internação) a cada 10k habitantes': leitos_10k, 'Leitos UTI SUS': leitos_uti_sus, 'Leitos UTI não-SUS': leitos_uti_nsus, 'Leitos UTI - Total': leitos_uti_total, '%' + ' de leitos UTI SUS': leitos_uti_sus_percent, 'Leitos UTI a cada 10k habitantes': leitos_uti_10k, 'Leitos UTI COVID-19 SUS': leitos_covid_sus, 'Leitos UTI COVID-19 não-SUS': leitos_covid_nsus, 'Leitos UTI COVID-19 - Total': leitos_covid_total, '%' + ' de leitos UTI COVID-19 SUS': leitos_covid_sus_percent, 'Leitos UTI COVID-19 a cada 10k habitantes': leitos_covid_10k} df = pd.DataFrame(data=dados) util.write_to_csv(df, "Brasil - Municípios") stats.stats_municipios(pd.read_csv("../data/processed/Brasil - Municípios.csv"))