-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
198 additions
and
535 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,99 +0,0 @@ | ||
from scimodom.database.database import get_session | ||
from scimodom.services.importer.data import EUFDataImporter | ||
from scimodom.services.importer.generic import BEDImporter | ||
from scimodom.services.importer.header import EUFHeaderImporter | ||
|
||
|
||
class Importer: | ||
"""Defines a general Importer class to handle | ||
EU (bedRMod) formatted files. | ||
:param header: EU header importer | ||
:type header: EUFHeaderImporter | ||
:param data: EU data importer | ||
:type data: EUFDataImporter | ||
""" | ||
|
||
def __init__( | ||
self, | ||
header: EUFHeaderImporter, | ||
data: EUFDataImporter | None = None, | ||
) -> None: | ||
"""Initializer method.""" | ||
self._header = header | ||
self._data = data | ||
|
||
def init_data_importer( | ||
self, association: dict[str, int], seqids: list[str] | ||
) -> None: | ||
"""Instantiate EUFDataImporter. | ||
:param association: A dictionary of association IDs of the form | ||
{name: association_id}, where name is the modification short_name. | ||
The association ID provides information about the dataset (EUFID), | ||
the modification, the organism, and the technology used. | ||
:type association: dict of {str: int} | ||
:param seqids: List of chromosomes or scaffolds. The seqid must be | ||
one used with Ensembl, e.g. standard Ensembl chromosome name w/o | ||
the "chr" prefix. Only records with seqid in seqids will be imported. | ||
:type seqids: list of str | ||
""" | ||
|
||
version = self._header._specs_ver | ||
filen = self._header._filen | ||
session = get_session() | ||
if self._header._handle.closed is False: | ||
self._header.close() | ||
if self._data is None: | ||
self._data = EUFDataImporter( | ||
session=session, | ||
filen=filen, | ||
handle=open(filen, "r"), | ||
association=association, | ||
seqids=seqids, | ||
specs_ver=version, | ||
) | ||
|
||
|
||
def get_importer(filen: str, smid: str, eufid: str, title: str): | ||
"""Instantiate Importer. | ||
:param filen: File path | ||
:type filen: str | ||
:param smid: Sci-ModoM project ID or SMID | ||
:type smid: str | ||
:param eufid: EUF ID (dataset) or EUFID | ||
:type eufid: str | ||
:param title: Title associated with EUF/bedRMod dataset | ||
:type title: str | ||
""" | ||
session = get_session() | ||
|
||
return Importer( | ||
header=EUFHeaderImporter( | ||
session=session, | ||
filen=filen, | ||
handle=open(filen, "r"), | ||
smid=smid, | ||
eufid=eufid, | ||
title=title, | ||
), | ||
data=None, | ||
) | ||
|
||
|
||
def get_bed_importer( | ||
filen: str, | ||
): | ||
"""Instantiate BED Importer. | ||
:param filen: File path | ||
:type filen: str | ||
""" | ||
session = get_session() | ||
|
||
return BEDImporter( | ||
session=session, | ||
filen=filen, | ||
handle=open(filen, "r"), | ||
) | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
from scimodom.database.database import get_session | ||
from scimodom.services.importer.data import EUFDataImporter | ||
from scimodom.services.importer.generic import BEDImporter | ||
from scimodom.services.importer.header import EUFHeaderImporter | ||
|
||
|
||
class Importer: | ||
"""Defines a general Importer class to handle | ||
EU (bedRMod) formatted files. | ||
:param header: EU header importer | ||
:type header: EUFHeaderImporter | ||
:param data: EU data importer | ||
:type data: EUFDataImporter | ||
""" | ||
|
||
def __init__( | ||
self, | ||
header: EUFHeaderImporter, | ||
data: EUFDataImporter | None = None, | ||
) -> None: | ||
"""Initializer method.""" | ||
self.header = header | ||
self.data = data | ||
|
||
def init_data_importer( | ||
self, association: dict[str, int], seqids: list[str] | ||
) -> None: | ||
"""Instantiate EUFDataImporter. | ||
:param association: A dictionary of association IDs of the form | ||
{name: association_id}, where name is the modification short_name. | ||
The association ID provides information about the dataset (EUFID), | ||
the modification, the organism, and the technology used. | ||
:type association: dict of {str: int} | ||
:param seqids: List of chromosomes or scaffolds. The seqid must be | ||
one used with Ensembl, e.g. standard Ensembl chromosome name w/o | ||
the "chr" prefix. Only records with seqid in seqids will be imported. | ||
:type seqids: list of str | ||
""" | ||
|
||
version = self.header._specs_ver | ||
filen = self.header._filen | ||
session = get_session() | ||
if self.header._handle.closed is False: | ||
self.header.close() | ||
if self.data is None: | ||
self.data = EUFDataImporter( | ||
session=session(), | ||
filen=filen, | ||
handle=open(filen, "r"), | ||
association=association, | ||
seqids=seqids, | ||
specs_ver=version, | ||
) | ||
|
||
|
||
def get_importer(filen: str, smid: str, eufid: str, title: str): | ||
"""Instantiate Importer. | ||
:param filen: File path | ||
:type filen: str | ||
:param smid: Sci-ModoM project ID or SMID | ||
:type smid: str | ||
:param eufid: EUF ID (dataset) or EUFID | ||
:type eufid: str | ||
:param title: Title associated with EUF/bedRMod dataset | ||
:type title: str | ||
""" | ||
session = get_session() | ||
|
||
return Importer( | ||
header=EUFHeaderImporter( | ||
session=session(), | ||
filen=filen, | ||
handle=open(filen, "r"), | ||
smid=smid, | ||
eufid=eufid, | ||
title=title, | ||
), | ||
data=None, | ||
) | ||
|
||
|
||
def get_bed_importer( | ||
filen: str, | ||
): | ||
"""Instantiate BED Importer. | ||
:param filen: File path | ||
:type filen: str | ||
""" | ||
session = get_session() | ||
|
||
return BEDImporter( | ||
session=session(), | ||
filen=filen, | ||
handle=open(filen, "r"), | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.