コード例 #1
0
ファイル: assessment.py プロジェクト: swsnider/portfolio
	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()
コード例 #2
0
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()
コード例 #3
0
ファイル: trader_test.py プロジェクト: ianpark/bear-trader
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()
コード例 #4
0
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)))
コード例 #5
0
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()
コード例 #7
0
ファイル: spreadsheet.py プロジェクト: Caskman/accounting
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)
コード例 #9
0
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))
コード例 #10
0
ファイル: assessment.py プロジェクト: swsnider/portfolio
	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)
コード例 #11
0
ファイル: assessment.py プロジェクト: swsnider/portfolio
	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)
コード例 #12
0
ファイル: estados.py プロジェクト: Debsadetsky/publichealth
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"))
コード例 #13
0
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"))