Skip to content

Commit

Permalink
abstractification of conkit.io._parser.Parser class
Browse files Browse the repository at this point in the history
  • Loading branch information
Felix Simkovic committed Aug 2, 2017
1 parent 6cd9a45 commit d440967
Show file tree
Hide file tree
Showing 22 changed files with 96 additions and 104 deletions.
8 changes: 4 additions & 4 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ Changelog

v0.8.3dev1
----------

- ``_BandwidthCalc`` class renamed to ``BandwidthBase`` and turned into abstract class
- ``LinearBW`` calculator added for linear bandwidth calculation in analysis
- Distance definitions accept floating point values
- ``requirements.txt`` file re-added for easier dependency installation
- Distance definitions accept floating point values
- ``LinearBW`` calculator added for linear bandwidth calculation in analysis
- ``_BandwidthCalc`` class renamed to ``BandwidthBase``
- Abstractified ``BandwidthBase``, and ``Parser`` with all subparser classes
- Bug fix
- ``PconsParser`` class accepts negative ``raw_score`` values
- ``SequenceFile.neff`` returns ``float`` instead of ``int``
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,13 @@ def __repr__(self):
def contact_file_parsers(self):
"""A dict of contact file parsers"""
# Mask as dictionaries to not break existing code
return {c.id: c for c in self._parsers if c.group == "_ContactFileParser" or c.group == "_GenericStructureParser"}
return {c.id: c for c in self._parsers if c.group == "ContactFileParser" or c.group == "GenericStructureParser"}

@property
def sequence_file_parsers(self):
"""A dict of sequence file parsers"""
# Mask as dictionaries to not break existing code
return {c.id: c for c in self._parsers if c.group == "_SequenceFileParser"}
return {c.id: c for c in self._parsers if c.group == "SequenceFileParser"}

@property
def file_parsers(self):
Expand Down
54 changes: 25 additions & 29 deletions conkit/io/_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,33 +35,31 @@
__date__ = "04 Oct 2016"
__version__ = "0.1"

import abc

ABC = abc.ABCMeta('ABC', (object,), {})

from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile
from conkit.core.sequence import Sequence
from conkit.core.sequencefile import SequenceFile


class _Parser(object):
"""General purpose class for all parsers
Notes
-----
Do no instantiate this class directly
class Parser(ABC):
"""Abstract class for all parsers
"""
def __init__(self):
@abc.abstractmethod
def read(self):
pass

@abc.abstractmethod
def write(self):
pass

class _ContactFileParser(_Parser):
"""General purpose class for all contact file parsers
"""
def __init__(self):
super(_ContactFileParser, self).__init__()

def _reconstruct(self, hierarchy):
@classmethod
def _reconstruct(cls, hierarchy):
"""Wrapper to re-construct full hierarchy when parts are provided"""
if isinstance(hierarchy, ContactFile):
h = hierarchy
Expand All @@ -73,21 +71,19 @@ def _reconstruct(self, hierarchy):
m = ContactMap('1')
m.add(hierarchy)
h.add(m)
elif isinstance(hierarchy, SequenceFile):
h = hierarchy
elif isinstance(hierarchy, Sequence):
h = SequenceFile('conkit')
h.add(hierarchy)
return h


class _SequenceFileParser(_Parser):
"""General purpose class for all sequence file parsers
"""
def __init__(self):
super(_SequenceFileParser, self).__init__()
class ContactFileParser(Parser):
"""General purpose class for all contact file parsers"""
pass


def _reconstruct(self, hierarchy):
"""Wrapper to re-construct full hierarchy when parts are provided"""
if isinstance(hierarchy, SequenceFile):
h = hierarchy
if isinstance(hierarchy, Sequence):
h = SequenceFile('conkit')
h.add(hierarchy)
return h
class SequenceFileParser(Parser):
"""General purpose class for all sequence file parsers"""
pass
4 changes: 2 additions & 2 deletions conkit/io/a3m.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@
import os
import re

from conkit.io._parser import _SequenceFileParser
from conkit.io._parser import SequenceFileParser
from conkit.core.sequence import Sequence
from conkit.core.sequencefile import SequenceFile


class A3mParser(_SequenceFileParser):
class A3mParser(SequenceFileParser):
"""Parser class for A3M sequence files
"""
Expand Down
10 changes: 5 additions & 5 deletions conkit/io/bbcontacts.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,15 @@

import re

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile

RE_COMMENT = re.compile(r'^#+.*$')


class BbcontactsParser(_ContactFileParser):
class BbcontactsParser(ContactFileParser):
"""Class to parse a Bbcontacts contact file
"""
def __init__(self):
Expand Down Expand Up @@ -112,8 +112,8 @@ def write(self, f_handle, hierarchy):
Raises
------
RuntimeError
Not available
NotImplementedError
Write function not available
"""
raise RuntimeError('Not available')
raise NotImplementedError("Write function not available")
11 changes: 6 additions & 5 deletions conkit/io/bclcontact.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,15 @@

import re

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile

RE_SPLIT = re.compile(r'\s+')


class BCLContactParser(_ContactFileParser):
class BCLContactParser(ContactFileParser):
"""Class to parse a BCL::Contact contact file
"""
def __init__(self):
Expand Down Expand Up @@ -105,8 +105,9 @@ def write(self, f_handle, hierarchy):
Raises
------
RuntimeError
Not available
NotImplementedError
Write function not available
"""
raise RuntimeError("Not available")
raise NotImplementedError("Write function not available")

4 changes: 2 additions & 2 deletions conkit/io/casp.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import os
import re

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile
Expand All @@ -64,7 +64,7 @@
'res1_chain', 'res2_chain', 'res1_altseq', 'res2_altseq'])


class CaspParser(_ContactFileParser):
class CaspParser(ContactFileParser):
"""Parser class for CASP RR contact prediction file
"""
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/ccmpred.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,13 @@
import numpy as np
import sys

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile


class CCMpredParser(_ContactFileParser):
class CCMpredParser(ContactFileParser):
"""
Class to parse a CCMpred contact matrix
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/comsat.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@
import os
import re

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile

RE_SPLIT = re.compile(r'\s+')


class ComsatParser(_ContactFileParser):
class ComsatParser(ContactFileParser):
"""Class to parse a COMSAT contact file
"""
def __init__(self):
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/epcmap.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@

import os

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile


class EPCMapParser(_ContactFileParser):
class EPCMapParser(ContactFileParser):
"""Class to parse a EPC-Map contact prediction
"""
def read(self, f_handle, f_id="epcmap"):
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/evfold.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@
import os
import re

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile

RE_SPLIT = re.compile(r'\s+')


class EVfoldParser(_ContactFileParser):
class EVfoldParser(ContactFileParser):
"""Class to parse a EVfold contact file
"""
def __init__(self):
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/fasta.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@

import os

from conkit.io._parser import _SequenceFileParser
from conkit.io._parser import SequenceFileParser
from conkit.core.sequence import Sequence
from conkit.core.sequencefile import SequenceFile


class FastaParser(_SequenceFileParser):
class FastaParser(SequenceFileParser):
"""Parser class for FASTA sequence files
"""
def __init__(self):
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/freecontact.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@
import os
import re

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile

RE_SPLIT = re.compile(r'\s+')


class FreeContactParser(_ContactFileParser):
class FreeContactParser(ContactFileParser):
"""Class to parse a FreeContact contact file
"""
def __init__(self):
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/gremlin.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
import os
import re

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile
Expand All @@ -49,7 +49,7 @@
RE_SPLIT = re.compile(r'\s+')


class GremlinParser(_ContactFileParser):
class GremlinParser(ContactFileParser):
"""Parser class for GREMLIN contact prediction file
"""
def __init__(self):
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/jones.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@

import os

from conkit.io._parser import _SequenceFileParser
from conkit.io._parser import SequenceFileParser
from conkit.core.sequence import Sequence
from conkit.core.sequencefile import SequenceFile


class JonesParser(_SequenceFileParser):
class JonesParser(SequenceFileParser):
"""Parser class for Jones sequence files
This format is a "new" definition of sequence-only records.
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/membrain.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
import os
import re

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile
Expand All @@ -48,7 +48,7 @@
RE_SPLIT = re.compile(r'\s+')


class MemBrainParser(_ContactFileParser):
class MemBrainParser(ContactFileParser):
"""Class to parse a MemBrain contact file
"""
def __init__(self):
Expand Down
4 changes: 2 additions & 2 deletions conkit/io/pcons.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
import os
import re

from conkit.io._parser import _ContactFileParser
from conkit.io._parser import ContactFileParser
from conkit.core.contact import Contact
from conkit.core.contactmap import ContactMap
from conkit.core.contactfile import ContactFile
Expand All @@ -60,7 +60,7 @@
RE_SPLIT = re.compile(r'\s+')


class PconsParser(_ContactFileParser):
class PconsParser(ContactFileParser):
"""Class to parse a Pcons output
This module can be used to parse all versions of the
Expand Down
Loading

0 comments on commit d440967

Please sign in to comment.