In [4]:
from graphviz import Digraph
import math
cet_prereqs = Digraph(comment='Prerequisites in CET Program',  node_attr={'style': 'filled', 'fontsize': '20'})
cet_prereqs.graph_attr["rankdir"] = 'LR'
cet_prereqs.node('A', 'MATH099', color='gray', fillcolor="gray")
cet_prereqs.node('B', 'MATH101', color='gray', fillcolor="gray")
cet_prereqs.node('C', 'MATH103', color='gray', fillcolor="gray")
cet_prereqs.node('Q', 'MATH101 or MATH103', color='yellow', fillcolor="yellow")

cet_prereqs.node('D', 'MATH115', color='gray', fillcolor="gray")
cet_prereqs.node('E', 'CET201', { 'width':'1', 'height':'1' }, color='green') #fillcolor='red',  color='red', style='filled',
cet_prereqs.node('F', 'CET229', { 'width':str(math.sqrt(2)), 'height':str(math.sqrt(2)) }, color='green')
cet_prereqs.edges(['AB', 'AC', 'QD', 'DE','BQ', 'CQ'])


cet_prereqs.node('G', 'ENGR150', color='gray', fillcolor="gray")
cet_prereqs.node('H', 'ROBO110', color='gray', fillcolor="gray")
cet_prereqs.node('N', 'ENGR150 or ROBO110', color='yellow')

cet_prereqs.node('I', 'MATH135', color='gray', fillcolor="gray")
cet_prereqs.node('J', 'MATH152', color='gray', fillcolor="gray")
cet_prereqs.node('O', 'MATH135 or MATH152', color='yellow')

cet_prereqs.node('K', 'PHYS122', color='gray', fillcolor="gray")
cet_prereqs.node('L', 'PHYS126', color='gray', fillcolor="gray")
cet_prereqs.node('P', 'PHYS122 or PHYS126', color='yellow')

cet_prereqs.edges(['NM', 'OM', 'PM'])

cet_prereqs.node('M', 'CET236', { 'width':str(math.sqrt(10)), 'height':str(math.sqrt(10)) }, color='green')
cet_prereqs.edges(['GN', 'HN', 'IO', 'JO', 'KP', 'LP'])


cet_prereqs.node('R', 'CET233', color='gray',  fillcolor="gray")
cet_prereqs.node('S', 'CET233 or CET236', color='yellow')
cet_prereqs.node('T', 'CET243', { 'width':'1', 'height':'1' }, color='green')
cet_prereqs.edges(['RS', 'MS', 'ST'])

cet_prereqs.node('U', 'CET246', color='green')
cet_prereqs.edges(['SU'])

cet_prereqs.node('V', 'CET249', { 'width':str(math.sqrt(7)), 'height':str(math.sqrt(7)) }, color='green')

cet_prereqs.node('W', 'CET323', color='green')
cet_prereqs.edges(['TW'])

cet_prereqs.node('X', 'CET339', { 'width':'1', 'height':'1' }, color='green')
cet_prereqs.edges(['FX'])

cet_prereqs.node('Y', 'CET349', { 'width':str(math.sqrt(6)), 'height':str(math.sqrt(6)) }, color='green')
cet_prereqs.edges(['VY'])


cet_prereqs.node('a', 'MATH136', color='gray', fillcolor="gray")
cet_prereqs.node('b', 'MATH221', color='gray', fillcolor="gray")
cet_prereqs.node('c', 'MATH136 or MATH221', color='yellow')

cet_prereqs.node('Z', 'CET346', { 'width':str(math.sqrt(2)), 'height':str(math.sqrt(2)) }, color='green')
cet_prereqs.edges(['cZ', 'ac', 'bc', 'MZ'])


cet_prereqs.node('d', 'CET363', { 'width':str(math.sqrt(3)), 'height':str(math.sqrt(3)) }, color='green')
cet_prereqs.edges(['Sd'])

cet_prereqs.node('e', 'CET449', color='blue', fontcolor="white")
cet_prereqs.edges(['Ye'])

cet_prereqs.node('g', 'CS213', color='gray', fillcolor="gray")
cet_prereqs.node('h', 'CS151', color='gray', fillcolor="gray")
cet_prereqs.node('i', 'CS213 or CS151 or ROBO110', color='yellow')
cet_prereqs.node('f', 'CET453', { 'width':'1', 'height':'1' }, color='green')
cet_prereqs.edges(['df','if', 'gi', 'hi', 'Hi' ])


cet_prereqs.node('j', 'CET466', color='green')
cet_prereqs.edges(['dj'])


cet_prereqs.node('k', 'CET497', { 'width':'1', 'height':'1' }, color='green')
cet_prereqs.edges(['Yk', 'Zk'])

cet_prereqs.node('l', 'CET498', color='blue',fillcolor='blue',fontcolor='white')
cet_prereqs.edges(['kl'])


cet_prereqs.node('m', 'CET301', color='blue',fontcolor='white')
cet_prereqs.edges(['Em'])

cet_prereqs.node('o', 'Chair Permission', color='gray')
cet_prereqs.node('n', 'CET402', color='blue',fillcolor='blue',fontcolor='white')
cet_prereqs.edges(['on'])

cet_prereqs.node('p', 'CET443', color='blue',fillcolor='blue',fontcolor='white')
cet_prereqs.edges(['Yp'])

cet_prereqs.node('q', 'CET463', color='blue',fillcolor='blue',fontcolor='white')
cet_prereqs.edges(['fq'])

cet_prereqs.node('s', 'Chair permission or 75 credits', color='yellow')
cet_prereqs.node('r', 'CEGT400', color='blue',fillcolor='blue',fontcolor='white')
cet_prereqs.edges(['sr', 'os'])

cet_prereqs.node('t', 'CET439', color='blue',fillcolor='blue',fontcolor='white')
cet_prereqs.edges(['Xt'])

cet_prereqs.node('u', 'CET405', color='blue',fillcolor='blue',fontcolor='white')
cet_prereqs.edges(['ou'])


cet_prereqs.node('v', 'CET459', color='blue',fillcolor='blue',fontcolor='white')
cet_prereqs.edges(['Yv'])

cet_prereqs.node('w', 'CET479', color='blue',fillcolor='blue',fontcolor='white')
cet_prereqs.edges(['Yw'])

cet_prereqs.node('(', 'STAT104', color='gray')
cet_prereqs.node(')', 'CHEM161', color='gray')

cet_prereqs.render('./cet_prereqs.gv', view=True, format='png')


Out[4]:
'./cet_prereqs.gv.png'

In [61]:
from graphviz import Digraph
import math

            
fe_topics = Digraph(comment='FE Topic List', node_attr={'style': 'filled', 'fillcolor': '#0048E0', 'color': 'black', 'shape': 'square', 'fontcolor': 'white', 'fixedsize': 'true','width':str(math.sqrt(2)), 'height':str(math.sqrt(2))})
fe_topics.node('1', '1\nMathematics', gradientangle='0')
fe_topics.node('2', '2\nProbability\nand\nStatistics', gradientangle='30')
fe_topics.node('3', '3\nEthics and\nProfessional\nPractice', gradientangle='60')
fe_topics.node('4', '4\nEngineering\nEconomics', gradientangle='90')
fe_topics.node('5', '5\nProperties of\nElectrical\nMaterials', gradientangle='120')
fe_topics.node('6', '6\nEngineering\nSciences', gradientangle='150')
fe_topics.node('7', '7\nCircuit Analysis\n(DC and AC\nSteady State)', gradientangle='180')
fe_topics.node('8', '8\nLinear Systems', gradientangle='210')
fe_topics.node('9', '9\nSignal Processing', gradientangle='240')
fe_topics.node('0', '10\nElectronics', gradientangle='270')
fe_topics.node('!', '11\nPower', gradientangle='300')
fe_topics.node('@', '12\nElectromagnetics', gradientangle='330')
fe_topics.node('#', '13\nControl Systems', gradientangle='0')
fe_topics.node('$', '14\nCommunications', gradientangle='30')
fe_topics.node('%', '15\nComputer\nNetworks', gradientangle='60')
fe_topics.node('^', '16\nDigital\nSystems', gradientangle='90')
fe_topics.node('&', '17\nComputer\nSystems', gradientangle='120')
fe_topics.node('*', '18\nSoftware\nDevelopment', gradientangle='150')

fe_topics.edges(['17', '57', '67', '70', '0!', '@!'])
fe_topics.edges(['18', '8#', '8$', '89', '8!', '80', '8@'])
fe_topics.edges(['1@', '0^', '^&', '^*', '^%'])
fe_topics.edges(['26', '29', '2$'])


fe_topics.render('fe_topics.gv', view=True, format='png')


Out[61]:
'fe_topics.gv.png'

In [6]:
from graphviz import Digraph
import math
FEontoCE = Digraph(comment='Prerequisites in CET Program',  node_attr={'style': 'filled', 'fontsize': '60'})
FEontoCE.graph_attr["rankdir"] = 'LR'
FEontoCE.node('A', 'MATH099', color='gray', fillcolor="gray")
FEontoCE.node('B', 'MATH101', color='gray', fillcolor="gray")
FEontoCE.node('C', 'MATH103', color='gray', fillcolor="gray")
FEontoCE.node('Q', 'MATH101 or MATH103', color='yellow', fillcolor="yellow")

FEontoCE.node('D', 'MATH115', color='gray', fillcolor="gray")
FEontoCE.node('E', 'CET201', { 'width':'1', 'height':'1' }, color='orange') #fillcolor='red',  color='red', style='filled',
FEontoCE.node('F', 'CET229', { 'width':str(math.sqrt(2)), 'height':str(math.sqrt(2)) }, color='green')
FEontoCE.edges(['AB', 'AC', 'QD', 'DE','BQ', 'CQ'])


FEontoCE.node('G', 'ENGR150', color='gray', fillcolor="gray")
FEontoCE.node('H', 'ROBO110', color='gray', fillcolor="gray")
FEontoCE.node('N', 'ENGR150 or ROBO110', color='yellow')

FEontoCE.node('I', 'MATH135', color='gray', fillcolor="gray")
FEontoCE.node('J', 'MATH152', color='gray', fillcolor="gray")
FEontoCE.node('O', 'MATH135 or MATH152', color='yellow')

FEontoCE.node('K', 'PHYS122', color='gray', fillcolor="gray")
FEontoCE.node('L', 'PHYS126', color='gray', fillcolor="gray")
FEontoCE.node('P', 'PHYS122 or PHYS126', color='yellow')

FEontoCE.edges(['NM', 'OM', 'PM'])

FEontoCE.node('M', 'CET236', { 'width':str(math.sqrt(10)), 'height':str(math.sqrt(10)) }, color='green')
FEontoCE.edges(['GN', 'HN', 'IO', 'JO', 'KP', 'LP'])


FEontoCE.node('R', 'CET233', color='gray',  fillcolor="gray")
FEontoCE.node('S', 'CET233 or CET236', color='yellow')
FEontoCE.node('T', 'CET243', { 'width':'1', 'height':'1' }, color='green')
FEontoCE.edges(['RS', 'MS', 'ST'])

FEontoCE.node('U', 'CET246', color='orange')
FEontoCE.edges(['SU'])

FEontoCE.node('V', 'CET249', { 'width':str(math.sqrt(7)), 'height':str(math.sqrt(7)) }, color='green')

FEontoCE.node('W', 'CET323', color='green')
FEontoCE.edges(['TW'])

FEontoCE.node('X', 'CET339', { 'width':'1', 'height':'1' }, color='green')
FEontoCE.edges(['FX'])

FEontoCE.node('Y', 'CET349', { 'width':str(math.sqrt(6)), 'height':str(math.sqrt(6)) }, color='green')
FEontoCE.edges(['VY'])


FEontoCE.node('a', 'MATH136', color='gray', fillcolor="gray")
FEontoCE.node('b', 'MATH221', color='gray', fillcolor="gray")
FEontoCE.node('c', 'MATH136 or MATH221', color='yellow')

FEontoCE.node('Z', 'CET346', { 'width':str(math.sqrt(2)), 'height':str(math.sqrt(2)) }, color='green')
FEontoCE.edges(['cZ', 'ac', 'bc', 'MZ'])


FEontoCE.node('d', 'CET363', { 'width':str(math.sqrt(3)), 'height':str(math.sqrt(3)) }, color='green')
FEontoCE.edges(['Sd'])

FEontoCE.node('e', 'CET449', color='blue', fontcolor="white")
FEontoCE.edges(['Ye'])

FEontoCE.node('g', 'CS213', color='gray', fillcolor="gray")
FEontoCE.node('h', 'CS151', color='gray', fillcolor="gray")
FEontoCE.node('i', 'CS213 or CS151 or ROBO110', color='yellow')
FEontoCE.node('f', 'CET453', { 'width':'1', 'height':'1' }, color='green')
FEontoCE.edges(['df','if', 'gi', 'hi', 'Hi' ])


FEontoCE.node('j', 'CET466', color='green')
FEontoCE.edges(['dj'])


FEontoCE.node('k', 'CET497', { 'width':'1', 'height':'1' }, color='green')
FEontoCE.edges(['Yk', 'Zk'])

FEontoCE.node('l', 'CET498')
FEontoCE.edges(['kl'])


FEontoCE.node('m', 'CET301', color='orange')
FEontoCE.edges(['Em'])

FEontoCE.node('o', 'Chair Permission', color='gray')
FEontoCE.node('n', 'CET402', color='blue',fillcolor='blue',fontcolor='white')
FEontoCE.edges(['on'])

FEontoCE.node('p', 'CET443', color='blue',fillcolor='blue',fontcolor='white')
FEontoCE.edges(['Yp'])

FEontoCE.node('q', 'CET463', color='blue',fillcolor='blue',fontcolor='white')
FEontoCE.edges(['fq'])

FEontoCE.node('s', 'Chair permission or 75 credits', color='yellow')
FEontoCE.node('r', 'CEGT400', color='blue',fillcolor='blue',fontcolor='white')
FEontoCE.edges(['sr', 'os'])

FEontoCE.node('t', 'CET439', color='blue',fillcolor='blue',fontcolor='white')
FEontoCE.edges(['Xt'])

FEontoCE.node('u', 'CET405', color='blue',fillcolor='blue',fontcolor='white')
FEontoCE.edges(['ou'])


FEontoCE.node('v', 'CET459', color='blue',fillcolor='blue',fontcolor='white')
FEontoCE.edges(['Yv'])

FEontoCE.node('w', 'CET479', color='blue',fillcolor='blue',fontcolor='white')
FEontoCE.edges(['Yw'])

FEontoCE.node('(', 'STAT104', color='gray')
FEontoCE.node(')', 'CHEM161', color='gray')

FEontoCE.node('-', 'Not covered', color='red', fillcolor='red', style='filled', fontsize='60')

FEontoCE.attr('node', shape='rectangle', style='filled', fontcolor='white', fontsize='60', fillcolor='#0048E0', fixedsize='true', width=str(3*math.sqrt(8)), height=str(math.sqrt(8)))

FEontoCE.node('1', 'Mathematics', gradientangle='0')
FEontoCE.node('2', 'Probability\nand\nStatistics', gradientangle='30')
FEontoCE.node('3', 'Ethics and\nProfessional\nPractice', gradientangle='60')
FEontoCE.node('4', 'Engineering\nEconomics', gradientangle='90')
FEontoCE.node('5', 'Properties of\nElectrical\nMaterials', gradientangle='120')
FEontoCE.node('6', 'Engineering\nSciences', gradientangle='150')
FEontoCE.node('7', 'Circuit Analysis\n(DC and AC\nSteady State)', gradientangle='180')
FEontoCE.node('8', 'Linear Systems', gradientangle='210')
FEontoCE.node('9', 'Signal Processing', gradientangle='240')
FEontoCE.node('0', 'Electronics', gradientangle='270')
FEontoCE.node('!', 'Power', gradientangle='300')
FEontoCE.node('@', 'Electromagnetics', gradientangle='330')
FEontoCE.node('#', 'Control Systems', gradientangle='0')
FEontoCE.node('$', 'Communications', gradientangle='30')
FEontoCE.node('%', 'Computer\nNetworks', gradientangle='60')
FEontoCE.node('^', 'Digital\nSystems', gradientangle='90')
FEontoCE.node('&', 'Computer\nSystems', gradientangle='120')
FEontoCE.node('*', 'Software\nDevelopment', gradientangle='150')


FEontoCE.attr('edge', style='dashed', dir='both',arrowtail='dot', arrowhead='vee')

# Mathematics ABCDIJOab
FEontoCE.edges(['1A', '1B', '1C', '1D', '1I', '1J', '1a', '1b'])

# Probability & Statistics
FEontoCE.edges(['2('])

# Ethics and Professional Practice
FEontoCE.edges(['3k', '3l'])

#Engineering Economics
FEontoCE.edges(['4k', '4l'])

# Properties of Electric Materials
FEontoCE.edges(['5M', '5T'])

# Engineering SCiences 
FEontoCE.edges(['6K', '6L', '6P', '6)'])

# Circuit Analysis (DC and AC Steady State)
FEontoCE.edges(['7M', '7R'])

# Linear Systems
FEontoCE.edges(['8Z'])

# Signal Processing
FEontoCE.edges(['9Z'])

# Electronics
FEontoCE.edges(['0T', '0W'])

# Power, Electromagnetics, Control Systems
FEontoCE.edges(['!-', '@-', '#-'])

# Communications
FEontoCE.edges(['$p'])

# Computer Networks
FEontoCE.edges(['%V','%X', '%Y', '%e', '%t', '%w', '%v'])

# Digital Systems
FEontoCE.edges(['^d','^j'])

# Computer Systems
FEontoCE.edges(['&f','&q', '&g', '&h', '&F'])

# Software
FEontoCE.edges(['*f', '*q'])


FEontoCE.render('FEontoCE.gv', view=True, format='png')


Out[6]:
'FEontoCE.gv.png'

In [3]:
import os
 
path = '.'
 
files = os.listdir(path)
for name in files:
    print(name)


.gitignore
.ipynb_checkpoints
cet_advising.ipynb
cet_prereqs.gv
cet_prereqs.gv.png
FEontoCE-tmp.gv
FEontoCE-tmp.gv.png
FEontoCE.gv
FEontoCE.gv.png
FEontoCE.png
fe_topics.gv
fe_topics.png

In [ ]: