Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
graph-tool
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
40
Issues
40
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tiago Peixoto
graph-tool
Commits
dd390b86
Commit
dd390b86
authored
Nov 16, 2013
by
Tiago Peixoto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Split graph_community_network.cc into two compilation units
This reduces memory use during compilation.
parent
45f28a19
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
91 additions
and
28 deletions
+91
-28
src/graph/community/Makefile.am
src/graph/community/Makefile.am
+1
-0
src/graph/community/graph_community_network.cc
src/graph/community/graph_community_network.cc
+8
-28
src/graph/community/graph_community_network_edges.cc
src/graph/community/graph_community_network_edges.cc
+82
-0
No files found.
src/graph/community/Makefile.am
View file @
dd390b86
...
...
@@ -18,6 +18,7 @@ libgraph_tool_community_la_SOURCES = \
graph_blockmodel.cc
\
graph_community.cc
\
graph_community_network.cc
\
graph_community_network_edges.cc
\
graph_community_network_vavg.cc
\
graph_community_network_eavg.cc
...
...
src/graph/community/graph_community_network.cc
View file @
dd390b86
...
...
@@ -80,6 +80,11 @@ struct get_community_network_edges_dispatch
}
};
void
community_network_edges
(
GraphInterface
&
gi
,
GraphInterface
&
cgi
,
boost
::
any
community_property
,
boost
::
any
condensed_community_property
,
boost
::
any
edge_count
,
boost
::
any
eweight
,
bool
self_loops
);
void
community_network
(
GraphInterface
&
gi
,
GraphInterface
&
cgi
,
boost
::
any
community_property
,
...
...
@@ -91,31 +96,10 @@ void community_network(GraphInterface& gi, GraphInterface& cgi,
{
typedef
boost
::
mpl
::
push_back
<
writable_vertex_scalar_properties
,
no_vweight_map_t
>::
type
vweight_properties
;
typedef
boost
::
mpl
::
push_back
<
writable_edge_scalar_properties
,
no_eweight_map_t
>::
type
eweight_properties
;
if
(
eweight
.
empty
())
eweight
=
no_eweight_map_t
(
1
);
if
(
vweight
.
empty
())
vweight
=
no_vweight_map_t
(
1
);
typedef
boost
::
mpl
::
insert_range
<
writable_vertex_scalar_properties
,
boost
::
mpl
::
end
<
writable_vertex_scalar_properties
>::
type
,
vertex_scalar_vector_properties
>::
type
vprops_temp
;
typedef
boost
::
mpl
::
push_back
<
vprops_temp
,
property_map_type
::
apply
<
boost
::
python
::
object
,
GraphInterface
::
vertex_index_map_t
>::
type
>::
type
vprops_t
;
typedef
boost
::
mpl
::
insert_range
<
writable_edge_scalar_properties
,
boost
::
mpl
::
end
<
writable_edge_scalar_properties
>::
type
,
edge_scalar_vector_properties
>::
type
eprops_temp
;
typedef
boost
::
mpl
::
push_back
<
eprops_temp
,
property_map_type
::
apply
<
boost
::
python
::
object
,
GraphInterface
::
edge_index_map_t
>::
type
>::
type
eprops_t
;
run_action
<>
()
(
gi
,
std
::
bind
(
get_community_network_vertices_dispatch
(),
placeholders
::
_1
,
std
::
ref
(
cgi
.
GetGraph
()),
...
...
@@ -124,11 +108,7 @@ void community_network(GraphInterface& gi, GraphInterface& cgi,
writable_vertex_properties
(),
vweight_properties
())
(
community_property
,
vweight
);
run_action
<>
()
(
gi
,
std
::
bind
(
get_community_network_edges_dispatch
(
self_loops
),
placeholders
::
_1
,
std
::
ref
(
cgi
.
GetGraph
()),
cgi
.
GetEdgeIndex
(),
placeholders
::
_2
,
condensed_community_property
,
placeholders
::
_3
,
edge_count
),
writable_vertex_properties
(),
eweight_properties
())
(
community_property
,
eweight
);
community_network_edges
(
gi
,
cgi
,
community_property
,
condensed_community_property
,
edge_count
,
eweight
,
self_loops
);
}
src/graph/community/graph_community_network_edges.cc
0 → 100644
View file @
dd390b86
// graph-tool -- a general graph modification and manipulation thingy
//
// Copyright (C) 2006-2013 Tiago de Paula Peixoto <tiago@skewed.de>
//
// 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/>.
#include "graph_python_interface.hh"
#include "graph_filtering.hh"
#include "graph.hh"
#include "graph_selectors.hh"
#include "graph_properties.hh"
#include <boost/bind.hpp>
#include <boost/bind/placeholders.hpp>
#include <boost/mpl/push_back.hpp>
#include <boost/python.hpp>
#include "graph_community_network.hh"
using
namespace
std
;
using
namespace
boost
;
using
namespace
graph_tool
;
typedef
ConstantPropertyMap
<
int32_t
,
GraphInterface
::
edge_t
>
no_eweight_map_t
;
typedef
property_map_type
::
apply
<
int32_t
,
GraphInterface
::
edge_index_map_t
>::
type
::
unchecked_t
ecount_map_t
;
struct
get_community_network_edges_dispatch
{
get_community_network_edges_dispatch
(
bool
self_loops
)
:
_self_loops
(
self_loops
)
{}
bool
_self_loops
;
template
<
class
Graph
,
class
CommunityGraph
,
class
CommunityMap
,
class
EdgeWeightMap
,
class
EdgeIndex
>
void
operator
()(
const
Graph
&
g
,
CommunityGraph
&
cg
,
EdgeIndex
cedge_index
,
CommunityMap
s_map
,
boost
::
any
acs_map
,
EdgeWeightMap
eweight
,
boost
::
any
ecount
)
const
{
typename
CommunityMap
::
checked_t
cs_map
=
boost
::
any_cast
<
typename
CommunityMap
::
checked_t
>
(
acs_map
);
typedef
typename
boost
::
mpl
::
if_
<
std
::
is_same
<
no_eweight_map_t
,
EdgeWeightMap
>
,
ecount_map_t
,
EdgeWeightMap
>::
type
eweight_t
;
typename
eweight_t
::
checked_t
edge_count
=
boost
::
any_cast
<
typename
eweight_t
::
checked_t
>
(
ecount
);
get_community_network_edges
()(
g
,
cg
,
cedge_index
,
s_map
,
cs_map
,
eweight
,
edge_count
,
_self_loops
);
}
};
void
community_network_edges
(
GraphInterface
&
gi
,
GraphInterface
&
cgi
,
boost
::
any
community_property
,
boost
::
any
condensed_community_property
,
boost
::
any
edge_count
,
boost
::
any
eweight
,
bool
self_loops
)
{
typedef
boost
::
mpl
::
push_back
<
writable_edge_scalar_properties
,
no_eweight_map_t
>::
type
eweight_properties
;
if
(
eweight
.
empty
())
eweight
=
no_eweight_map_t
(
1
);
run_action
<>
()
(
gi
,
std
::
bind
(
get_community_network_edges_dispatch
(
self_loops
),
placeholders
::
_1
,
std
::
ref
(
cgi
.
GetGraph
()),
cgi
.
GetEdgeIndex
(),
placeholders
::
_2
,
condensed_community_property
,
placeholders
::
_3
,
edge_count
),
writable_vertex_properties
(),
eweight_properties
())
(
community_property
,
eweight
);
}
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