Autor |
Mensaje |
aletorrado
Nivel 6
Edad: 34
Registrado: 29 Mar 2008
Mensajes: 205
Ubicación: Almagro
Carrera: Informática
|
|
Gente, queria compartir un codigo python que estuve haciendo estos dias.. lo que hace es generar una imagen con un mapa de las materias, indicando con diferentes colores si la materia ya esta lista (azul), si falta dar el final (verde), si estas habilitado a cursarla (naranja), o si no (rojo).
Los datos entran por parametros (ver usage con opcion -h). Son dos archivos csv, uno con las materias en el formato "materia,correlativa_0,..,correlativa_n" y el otro son las materias que uno cursó, en el formato "materia,estado" (estado sería basicamente, "en final" o "lista").
Dejo el mio a modo de ejemplo, son las materias de ingenieria en informatica, sin orientacion.
Ah, requiere pygraphviz (en debian o ubuntu: aptitude install python-pygraphviz). La version del soft es
|
|
|
|
|
|
|
|
|
aletorrado
Nivel 6
Edad: 34
Registrado: 29 Mar 2008
Mensajes: 205
Ubicación: Almagro
Carrera: Informática
|
|
no me deja adjuntar.. copio aca..
script
Código:
|
#!/usr/bin/env python
# Este archivo usa el encoding: utf-8
# Copyright 2009 Alejandro Torrado
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301, USA.
import sys, csv
from optparse import OptionParser
try:
from pygraphviz import *
except ImportError:
print "Requiere el módulo \"pygraphviz\""
sys.exit(1)
def generar_grafo(materias,cursadas,colores):
grafo = AGraph(directed=True) # Creo el grafo dirigido
file_materias = open(materias)
csv_materias = csv.reader(file_materias)
# proceso el programa de materias
for linea in csv_materias:
grafo.add_node(linea[0],color="orange")
for correlativa in linea[1:]:
grafo.add_edge(correlativa,linea[0])
#grafo.add_edge(linea[0],correlativa)
file_cursadas = open(cursadas)
csv_cursadas = csv.reader(file_cursadas)
# proceso las materias cursadas
for linea in csv_cursadas:
nodo = grafo.get_node(linea[0])
nodo.attr["color"]=colores[linea[1]]
# calculo estado de las otras materias
for nodo in grafo:
iterador = grafo.iterinedges(nodo)
for vertice in iterador:
nodo_correlativa = grafo.get_node(vertice[0])
if nodo_correlativa.attr["color"] != "blue":
nodo.attr["color"] = "red"
break
return grafo
parser = OptionParser()
parser.add_option("-m", "--materias", dest="materias", default="materias")
parser.add_option("-c", "--cursadas", dest="cursadas", default="cursadas")
parser.add_option("-s", "--salida", dest="salida", default="grafo.png")
options, args = parser.parse_args()
colores = {"en final":"green","lista":"blue","cursable":"orange",\
"no cursable":"red"}
migrafo = generar_grafo(options.materias,options.cursadas,colores)
migrafo.draw(options.salida,prog="dot")
|
materias
Código:
|
CBC
6103,CBC
6201,CBC
7540,CBC
6108,CBC
6203,6103,6201
6301,CBC
7541,7540
6215,6108,6203,6301
6602,6203
6670,6108,6203,7541
7507,7541
7512,6103,6108,7541
6109,6103,6108
6110,6103,6108
6620,6602,6670
7506,6670,7541
7542,6670,7512,7541
7112,7506
7114,6110,6203,6301,7542
7508,7506
7509,7507,7542
7510,7508,7509
7515,7506,7509
7543,6620,6215,7508
7552,7114,7507,7542
|
cursadas
Código:
|
CBC,lista
6103,lista
6201,lista
7540,lista
6108,en final
6301,lista
7541,en final
|
|
|
|
|
|
|
|
|
|
CrisJ
Colaborador
Edad: 34
Registrado: 05 Abr 2008
Mensajes: 3807
Ubicación: Recoleta - un poco menos burgués que Cornell
Carrera: Civil
|
|
|
|
|
aletorrado
Nivel 6
Edad: 34
Registrado: 29 Mar 2008
Mensajes: 205
Ubicación: Almagro
Carrera: Informática
|
|
Jaja es un script y/o programa, que te arma un esquema pasandole la info de como esta compuesta la carrera y que materias de la carrera cursaste (para ponerle los colorcitos) a traves de dos archivos de texto con esa informacion, que le pasas al llamarlo.
|
|
|
|
|
|
|
|
|
Fito
Nivel 5
Edad: 38
Registrado: 17 Nov 2005
Mensajes: 173
Ubicación: Little Horse
Carrera: Electrónica
|
|
Si agregas todo el programa se complica un poco pero zafa...
Algunos comentarios:
- Hay dos materias 66.51 y 75.04 que por alguna razón aparecen en negro. No me doy
cuenta por qué (será el archivo materias?).
- Se podría agrandar la longitud vertical de la imagen???
- Hay que tener en cuenta que hay materias que tiene como correlatividad créditos o
materias(en la imagen que puse se ve eso). Ésto implica poner en el archivo de
cursadas por ejemplo:
Código:
|
120 créditos,lista
20 materias,lista
|
Pensate algo para que quede más copado .
BTW, este sería el programa de electrónica completo:
Código:
|
CBC
61.03 Análisis Matemático II A,CBC
61.08 Álgebra II A,CBC
62.01 Física I A,CBC
61.10 Análisis Matemático III A,61.03 Análisis Matemático II A,61.08 Álgebra II A
62.03 Física II A,61.03 Análisis Matemático II A,62.01 Física I A
63.01 Química,CBC
75.02 Algoritmos y Programación I,CBC
61.09 Probabilidad y Estadística B,61.03 Análisis Matemático II A,61.08 Álgebra II A
62.05 Física III,61.08 Álgebra II A,62.03 Física II A,63.01 Química
66.01 Técnica Digital,61.08 Álgebra II A,75.02 Algoritmos y Programación I
66.02 Laboratorio,62.03 Física II A
66.06 Análisis de Circuitos,61.10 Análisis Matemático III A,62.03 Física II A
66.74 Señales y Sistemas,61.09 Probabilidad y Estadística B,66.06 Análisis de Circuitos
66.08 Circuitos Electrónicos I,62.05 Física III,66.02 Laboratorio,66.06 Análisis de Circuitos
66.09 Laboratorio de Microcomputadoras,66.01 Técnica Digital,66.02 Laboratorio
66.10 Circuitos Electrónicos II,66.74 Señales y Sistemas,66.08 Circuitos Electrónicos I
66.44 Instrumentos Electrónicos,66.09 Laboratorio de Microcomputadoras,66.10 Circuitos Electrónicos II
71.27 Legal,120 créditos
66.12 Introducción a Proyectos,140 créditos
66.00 Tesis de Ingeniería. Electrónica,140 créditos
66.99 Trabajo Profesional de Ingeniería Electrónica,140 créditos
61.07 Matemática Discreta,CBC
61.17 Teoría de Grafos,61.07 Matemática Discreta
61.18 Ecuaciones Diferenciales Ordinarias,61.03 Análisis Matemático II A,61.08 Álgebra II A
61.19 Análisis Funcional,61.10 Análisis Matemático III A
62.09 Electromagnetismo B,62.03 Física II A
62.10 Física del Estado Sólido,62.05 Física III
62.11 Mecánica Racional,61.10 Análisis Matemático III A,62.01 Física I A
65.06 Máquinas Eléctricas,66.06 Análisis de Circuitos
66.17 Sistemas Digitales,66.01 Técnica Digital
66.18 Teoría de Control I,66.74 Señales y Sistemas
66.19 Circuito de Pulsos,66.01 Técnica Digital,66.08 Circuitos Electrónicos I
66.20 Organización de Computadoras,66.09 Laboratorio de Microcomputadoras
66.21 Comunicación de Datos,66.74 Señales y Sistemas
66.22 Laboratorio de Comunicaciones I,66.02 Laboratorio,66.74 Señales y Sistemas,66.75 Procesos Estocásticos
66.23 Teoría de las Telecomunicaciones,66.74 Señales y Sistemas,66.75 Procesos Estocásticos
66.24 Teoría de la Información y Codificación,66.01 Técnica Digital,66.74 Señales y Sistemas,66.75 Procesos Estocásticos
66.25 Dispositivos Semiconductores,62.05 Física III
66.26 Arquitecturas Paralelas,66.20 Organización de Computadoras
66.27 Electrónica de Potencia,65.06 Máquinas Eléctricas,66.10 Circuitos Electrónicos II,66.18 Teoría de Control I
66.28 Teoría de Control II,66.18 Teoría de Control I
66.29 Control Industrial Distribuido,66.18 Teoría de Control I
66.30 Control No Lineal,66.18 Teoría de Control I
66.31 Identificación y Control Adaptativo,66.18 Teoría de Control I
66.32 Robótica,62.11 Mecánica Racional,66.18 Teoría de Control I
66.33 Laboratorio de Sistemas Digitales,66.09 Laboratorio de Microcomputadoras
66.35 Técnica Digital Avanzada,61.07 Matemática Discreta,66.17 Sistemas Digitales
66.38 Procesamiento de Señales I,66.74 Señales y Sistemas,66.75 Procesos Estocásticos
66.39 Procesamiento de Señales II,66.38 Procesamiento de Señales I
66.42 Comunicaciones Digitales II,66.21 Comunicación de Datos,66.78 Comunicaciones Digitales y Analógicas
66.43 Ingeniería Biomédica,66.10 Circuitos Electrónicos II
66.45 Laboratorio de Mediciones,66.02 Laboratorio,66.10 Circuitos Electrónicos II
66.46 Procesamiento del Habla,66.74 Señales y Sistemas
66.47 Procesamiento de Imágenes,66.38 Procesamiento de Señales I,66.51 Teoría Detección y Estimación
66.48 Seminario de Electrónica I,20 Materias
66.49 Sistemas Biológicos,63.01 Química,66.74 Señales y Sistemas
66.50 Tecnología de Componentes,66.08 Circuitos Electrónicos I
66.51 Teoría Detección y Estimación,66.74 Señales y Sistemas,66.75 Procesos Estocásticos
66.53 Instrumentación y Control de Procesos,66.10 Circuitos Electrónicos II,66.18 Teoría de Control I
66.55 Simulación de Sistemas de Control,66.18 Teoría de Control I
66.56 Control Optimo,66.18 Teoría de Control I,66.51 Teoría Detección y Estimación
66.57 Optoelectrónica,62.09 Electromagnetismo B
66.61 Tecnología de Circuitos Integrados,66.08 Circuitos Electrónicos I
66.62 Redes de Computadoras,66.21 Comunicación de Datos
66.63 Redes Neuronales,66.74 Señales y Sistemas,66.75 Procesos Estocásticos
66.64 Control Robusto,66.28 Teoría de Control II
66.65 Control Digital,66.28 Teoría de Control II
66.66 Seminario de Electrónica II,66.48 Seminario de Electrónica I,20 Materias
66.67 Acústica,66.10 Circuitos Electrónicos II
66.68 Electroacústica,66.67 Acústica
66.69 Criptografía y Seguridad Informática,66.74 Señales y Sistemas,66.09 Laboratorio de Microcomputadoras
66.71 Sistemas Gráficos,61.10 Análisis Matemático III A,75.04 Algoritmos y Programación II
66.72 Señales e Imágenes en Biomedicina,66.49 Sistemas Biológicos,66.75 Procesos Estocásticos
66.73 Instalaciones e Instrumentación Biomédica,66.10 Circuitos Electrónicos II,66.49 Sistemas Biológicos
66.75 Procesos Estocásticos,61.09 Probabilidad y Estadística B,66.06 Análisis de Circuitos
66.76 Transmisión y Recepción de Comunicaciones,66.10 Circuitos Electrónicos II,66.74 Señales y Sistemas
66.77 Sistemas de Comunicaciones,66.74 Señales y Sistemas,66.75 Procesos Estocásticos
66.78 Comunicaciones Digitales y Analógicas,66.74 Señales y Sistemas,66.75 Procesos Estocásticos
66.79 Laboratorio de Comunicaciones,66.21 Comunicación de Datos,66.78 Comunicaciones Digitales y Analógicas
66.80 Sistemas de Microondas,62.09 Electromagnetismo B,66.78 Comunicaciones Digitales y Analógicas
66.81 Video y Redes de Cable,66.10 Circuitos Electrónicos II,66.78 Comunicaciones Digitales y Analógicas
66.82 Propagación y Sistemas Irradiantes,62.09 Electromagnetismo B
66.83 Infraestructura de Redes,66.78 Comunicaciones Digitales y Analógicas
66.84 Protocolos de Accesos Inalámbricos,66.21 Comunicación de Datos,66.78 Comunicaciones Digitales y Analógicas
71.01 Introducción a la Economía y Organización,61.03 Análisis Matemático II A
71.04 Organización Industrial I,61.09 Probabilidad y Estadística B
71.05 Organización Industrial II,71.04 Organización Industrial I
71.07 Investigación Operativa,61.08 Álgebra II A
71.23 Economía,61.03 Análisis Matemático II A
71.31 Organización de la Producción,20 Materias
71.36 Gestión de Calidad,61.09 Probabilidad y Estadística B
75.04 Algoritmos y Programación II,75.02 Algoritmos y Programación I
75.08 Sistemas Operativos,66.20 Organización de Computadoras,75.04 Algoritmos y Programación II
75.12 Análisis Numérico I,61.03 Análisis Matemático II A,61.08 Álgebra II A,75.02 Algoritmos y Programación I
75.22 Concurrencia,75.08 Sistemas Operativos
75.23 Inteligencia Artificial,75.04 Algoritmos y Programación II,61.07 Matemática Discreta
75.28 Base de Datos “B”,75.04 Algoritmos y Programación II
75.29 Teoría de Algoritmos I,61.07 Matemática Discreta,75.04 Algoritmos y Programación II
75.30 Teoría de Algoritmos II,75.29 Teoría de Algoritmos I
75.31 Teoría de Lenguaje,75.04 Algoritmos y Programación II
75.34 Redes y Teleprocesamiento II,66.21 Comunicación de Datos,75.08 Sistemas Operativos,75.28 Base de Datos “B”
75.38 Análisis Numérico II A,75.12 Análisis Numérico I
78.01 Idioma Inglés,CBC
78.02 Idioma Alemán,CBC
78.03 Idioma Francés,CBC
78.04 Idioma Italiano,CBC
78.05 Idioma Portugués,CBC
|
|
|
|
|
_________________
|
|
|
|
|
aletorrado
Nivel 6
Edad: 34
Registrado: 29 Mar 2008
Mensajes: 205
Ubicación: Almagro
Carrera: Informática
|
|
Bueno se podria agregar al csv de las materias cursadas la cantidad de creditos, y la cantidad de materias listas las podria contar facilmente.
El tema es que con todas las materias disponibles va a generar mas confusion que ayuda. Aca va un ejemplo actualizado de informatica sin orientacion, con etiquetas (abreviadas para que no se vaya en ancho).
|
|
|
|
|
|
|
|
|
cacho89
Nivel 3
Edad: 34
Registrado: 26 Feb 2009
Mensajes: 30
Carrera: Electrónica
|
|
muy bueno este script ahora lo pruebo y veo si me sale
|
|
|
|
|
|
|
|
|
cacho89
Nivel 3
Edad: 34
Registrado: 26 Feb 2009
Mensajes: 30
Carrera: Electrónica
|
|
che muy bueno me re copo.
es la primera vez q uso python y la verdad que me re intereso.
una preg: los modulos para generar grafos y parsear los argumentos son standar?? osea hay un "grafos.h" o su equivalente en python?
|
|
|
|
|
|
|
|
|
aletorrado
Nivel 6
Edad: 34
Registrado: 29 Mar 2008
Mensajes: 205
Ubicación: Almagro
Carrera: Informática
|
|
no hay un grafos incluido en python creo.. pero hay varias implementaciones ya hechas como esta que use yo "pygraphviz" o tambien esta el paquete "networkx". Seguramente se hubiera podido armar sin grafos, el tema es que este paquete ya incluia toda la parte de graficacion y algoritmos para "acomordar" los nodos. En un rato subo una nueva version.
|
|
|
|
|
|
|
|
|
Guido_Garrote
Moderador
Edad: 35
Registrado: 14 Oct 2007
Mensajes: 3319
Ubicación: AHÍ!
Carrera: Civil
|
|
che, se puede armar un ejecutable para probarlo? o estoy hablando pavadas?
alguien que me desasne
|
|
|
|
_________________
|
|
|
|
|
aletorrado
Nivel 6
Edad: 34
Registrado: 29 Mar 2008
Mensajes: 205
Ubicación: Almagro
Carrera: Informática
|
|
Jaja para windows decis? ee si se podria armar.... es bienvenido el que quiera hacerlo
|
|
|
|
|
|
|
|
|
CrisJ
Colaborador
Edad: 34
Registrado: 05 Abr 2008
Mensajes: 3807
Ubicación: Recoleta - un poco menos burgués que Cornell
Carrera: Civil
|
|
Guido_Garrote escribió:
|
che, se puede armar un ejecutable para probarlo? o estoy hablando pavadas?
alguien que me desasne
|
Guido los informáticos no tienen en cuenta a los cavernicolas civiles...no nos entienden,je
Quiero un .exe!quiero un .exe!
|
|
|
|
_________________ MLI + YO
1ra Ley Fundamental de la Fiuba: "In regno caeci, tortus est rex"
Comisión de Estudiantes de Ingeniería civil
|
|
|
|
|
aletorrado
Nivel 6
Edad: 34
Registrado: 29 Mar 2008
Mensajes: 205
Ubicación: Almagro
Carrera: Informática
|
|
|
|
|
aletorrado
Nivel 6
Edad: 34
Registrado: 29 Mar 2008
Mensajes: 205
Ubicación: Almagro
Carrera: Informática
|
|
mejor usen linux
|
|
|
|
|
|
|
|
|
Sebastian Santisi
Administrador Técnico
Edad: 42
Registrado: 23 Ago 2005
Mensajes: 17451
|
|
aletorrado escribió:
|
es que hay qe empaquetar muchas cosas juntas, pero si quieren usarlo en win, instalen python, graphviz, y pygraphviz y tendria qe andar igual.... dejo links
|
Py2exe hacía el laburito de recopilarte todos los módulos, zippearlos juntos con tus fuentes y hacer un pseudo ejecutable que descomprimía y corría a Python todo junto... hace mil que no lo uso, pero obviando el hecho de que es re choto lo que se exige de él, lo hacía bien.
|
|
|
|
_________________
|
|
|
|
|
|
Ir a página 1, 2 Siguiente
|
Ver tema siguiente
Ver tema anterior
Podés publicar nuevos temas en este foro No podés responder a temas en este foro No podés editar tus mensajes en este foro No podés borrar tus mensajes en este foro No podés votar en encuestas en este foro No Podéspostear archivos en este foro No Podés bajar archivos de este foro
|
Todas las horas son ART, ARST (GMT - 3, GMT - 2 Horas)
Protected by CBACK CrackerTracker365 Attacks blocked.
|