Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
genotoul-bioinfo
jflow
Commits
323e99a1
Commit
323e99a1
authored
Oct 24, 2014
by
Jerome Mariette
Browse files
No commit message
No commit message
parent
1b0e126c
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/jflow/graph.py
deleted
100644 → 0
View file @
1b0e126c
#
# Copyright (C) 2012 INRA
#
# 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 3 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, see <http://www.gnu.org/licenses/>.
#
class
Graph
(
object
):
def
__init__
(
self
,
graph_dict
=
{}):
""" initializes a graph object """
self
.
__graph_dict
=
graph_dict
def
vertices
(
self
):
""" returns the vertices of a graph """
return
list
(
self
.
__graph_dict
.
keys
())
def
edges
(
self
):
""" returns the edges of a graph """
edges
=
[]
for
edge
in
self
.
__generate_edges
():
edges
.
append
(
list
(
edge
))
return
edges
def
add_vertex
(
self
,
vertex
):
""" If the vertex "vertex" is not in
self.__graph_dict, a key "vertex" with an empty
list as a value is added to the dictionary.
Otherwise nothing has to be done.
"""
if
vertex
not
in
self
.
__graph_dict
:
self
.
__graph_dict
[
vertex
]
=
[]
def
add_edge
(
self
,
edge
):
""" assumes that edge is of type set, tuple or list;
between two vertices can be multiple edges!
"""
edge
=
set
(
edge
)
(
vertex1
,
vertex2
)
=
tuple
(
edge
)
if
vertex1
in
self
.
__graph_dict
:
self
.
__graph_dict
[
vertex1
].
append
(
vertex2
)
else
:
self
.
__graph_dict
[
vertex1
]
=
[
vertex2
]
def
__generate_edges
(
self
):
""" A static method generating the edges of the
graph "graph". Edges are represented as sets
with one (a loop back to the vertex) or two
vertices
"""
edges
=
[]
for
vertex
in
self
.
__graph_dict
:
for
neighbour
in
self
.
__graph_dict
[
vertex
]:
if
{
neighbour
,
vertex
}
not
in
edges
:
edges
.
append
({
vertex
,
neighbour
})
return
edges
def
__str__
(
self
):
res
=
"vertices: "
for
k
in
self
.
__graph_dict
:
res
+=
str
(
k
)
+
" "
res
+=
"
\n
edges: "
for
edge
in
self
.
__generate_edges
():
res
+=
str
(
edge
)
+
" "
return
res
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment