Skip to content

Commit

Permalink
bcy.Adapter: removed redundant write_csv method
Browse files Browse the repository at this point in the history
  • Loading branch information
deeenes committed Oct 19, 2022
1 parent 23b304a commit 84bc1a5
Showing 1 changed file with 28 additions and 61 deletions.
89 changes: 28 additions & 61 deletions pypath/biocypher/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,14 +170,24 @@ def dummy_network(self):
def translate(
self,
network: Optional[pypath_network.Network] = None,
export_csv: bool = False,
db_name: Optional[str] = None,
) -> Generator[tuple, None, None]:
"""
Loads a pypath network into the biocypher (Neo4j) backend.
Args:
- network (pypath.core.network.Network): A network database
object. If `None`, the value of :py:attr:`network` will be
used.
network:
A network database object. If `None`, the value of
:py:attr:`network` will be used.
export_csv:
Write the data into CSV files that can be imported by the
*neo4j-admin* tool. The default behaviour is to connect to
the server and insert the data into the database.
db_name:
In case of writing CSV files, a CLI call of *neo4j-admin*
will also be created. The name of the target database is
part of this call.
"""

network = network or self.network
Expand All @@ -196,11 +206,18 @@ def gen_nodes(nodes):

_id = self._process_id(n.identifier)
_type = n.entity_type
props = {"taxon": n.taxon}
props = {'taxon': n.taxon, 'label': n.label}
yield (_id, _type, props)

nodes = gen_nodes(network.nodes.values())
self.bcy.add_nodes(nodes = nodes)

if export_csv:

self.bcy.write_nodes(nodes, db_name = db_name)

else:

self.bcy.add_nodes(nodes = nodes)

# create id-type tuples for edges
# to enable translation between pypath and biocypher notation
Expand All @@ -216,71 +233,21 @@ def gen_edges(edges):
'directed': e.directed,
'resources': e.sources,
'references': e.references,
'effect': e.effect,
}

yield (src, tar, _type, props)

edges = gen_edges(network.generate_df_records(with_references = True))
self.bcy.add_edges(edges = edges)


def write_csv(
self,
network: Optional[pypath_network.Network] = None,
db_name: Optional[str] = None,
):
"""
Export network data into CSV files for neo4j-admin import.
These CSV files that need to be properly formatted since it turns
off integrity checks at import.
Args:
network:
A network database object. If `None`, the value of
:py:attr:`network` will be used.
"""

network = network or self.network

if not network:

self._log("No network provided.")

return

# write nodes
def gen_nodes(nodes):

for n in nodes:

_id = self._process_id(n.identifier)
_type = n.entity_type
_props = {"taxon": n.taxon, "label": n.label}

yield (_id, _type, _props)

id_type_tuples = gen_nodes(network.nodes.values())

self.bcy.write_nodes(id_type_tuples, db_name=db_name)

# write edges
def gen_edges(edges):

for e in edges:

_src = self._process_id(e.id_a)
_tar = self._process_id(e.id_b)
_type = e.type
_props = {"effect": e.effect, "directed": e.directed}

yield (_src, _tar, _type, _props)
if export_csv:

src_tar_type_tuples = gen_edges(network.generate_df_records())
self.bcy.write_edges(edges, db_name = db_name)
self.bcy.write_import_call()

self.bcy.write_edges(src_tar_type_tuples, db_name=db_name)
else:

self.bcy.write_import_call()
self.bcy.add_edges(edges = edges)


def _process_id(self, identifier: str) -> str:
Expand Down

0 comments on commit 84bc1a5

Please sign in to comment.