pombo-lab/gamtools

View on GitHub
lib/gamtools/cosegregation.py

Summary

Maintainability
D
1 day
Test Coverage

File cosegregation.py has 444 lines of code (exceeds 250 allowed). Consider refactoring.
Open

"""
========================
The cosegregation module
========================

Severity: Minor
Found in lib/gamtools/cosegregation.py - About 6 hrs to fix

    Cyclomatic complexity is too high in function matrix_from_args. (7)
    Open

    def matrix_from_args(args):
        """Extract parameters from an argparse namespace object and pass them to
        create_and_save_contact_matrix.
        """
    
    
    Severity: Minor
    Found in lib/gamtools/cosegregation.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Function matrix_from_args has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
    Open

    def matrix_from_args(args):
        """Extract parameters from an argparse namespace object and pass them to
        create_and_save_contact_matrix.
        """
    
    
    Severity: Minor
    Found in lib/gamtools/cosegregation.py - About 45 mins to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function create_and_save_contact_matrix has 5 arguments (exceeds 4 allowed). Consider refactoring.
    Open

    def create_and_save_contact_matrix(segregation_file, location_strings,
    Severity: Minor
    Found in lib/gamtools/cosegregation.py - About 35 mins to fix

      Similar blocks of code found in 2 locations. Consider refactoring.
      Open

      def get_npmi_from_regions(*regions):
          """Get the full normalized pointwise mutual information (npmi) matrix for n
          regions.
      
          This is a wrapper which determines the correct npmi function to call based
      Severity: Major
      Found in lib/gamtools/cosegregation.py and 1 other location - About 2 hrs to fix
      lib/gamtools/cosegregation.py on lines 292..316

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 50.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Similar blocks of code found in 2 locations. Consider refactoring.
      Open

      def get_dprime_from_regions(*regions):
          """Get the full normalized linkage disequilibrium (D') matrix for n
          regions.
      
          This is a wrapper which determines the correct normalized linkage
      Severity: Major
      Found in lib/gamtools/cosegregation.py and 1 other location - About 2 hrs to fix
      lib/gamtools/cosegregation.py on lines 337..361

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 50.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Similar blocks of code found in 4 locations. Consider refactoring.
      Open

      def get_dprime(segregation_data, *location_strings):
          """Calculate the normalized linkage disequilibrium (D') matrix for a given
          genomic location or locations. Where only one location is given, normalized
          linkage is calculated for that region against itself.  Where two regions
          are given, linkage is calculated for region one against region two.
      Severity: Major
      Found in lib/gamtools/cosegregation.py and 3 other locations - About 50 mins to fix
      lib/gamtools/cosegregation.py on lines 222..236
      lib/gamtools/cosegregation.py on lines 275..289
      lib/gamtools/cosegregation.py on lines 364..380

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 36.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Similar blocks of code found in 4 locations. Consider refactoring.
      Open

      def get_cosesgregation(segregation_data, *location_strings):
          """Calculate co-segregation frequencies for a given genomic
          location or locations. Where only one location is given,
          co-segregation is calculated for that region against itself.
      
      
      Severity: Major
      Found in lib/gamtools/cosegregation.py and 3 other locations - About 50 mins to fix
      lib/gamtools/cosegregation.py on lines 275..289
      lib/gamtools/cosegregation.py on lines 319..334
      lib/gamtools/cosegregation.py on lines 364..380

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 36.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Similar blocks of code found in 4 locations. Consider refactoring.
      Open

      def get_npmi(segregation_data, *location_strings):
          """Calculate the normalized pointwise mutual information (npmi) matrix for a given
          genomic location or locations. Where only one location is given, npmi
          is calculated for that region against itself.  Where two regions
          are given, linkage is calculated for region one against region two.
      Severity: Major
      Found in lib/gamtools/cosegregation.py and 3 other locations - About 50 mins to fix
      lib/gamtools/cosegregation.py on lines 222..236
      lib/gamtools/cosegregation.py on lines 275..289
      lib/gamtools/cosegregation.py on lines 319..334

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 36.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Similar blocks of code found in 4 locations. Consider refactoring.
      Open

      def get_linkage(segregation_data, *location_strings):
          """Calculate the linkage disequilibrium matrix for a given genomic
          location or locations. Where only one location is given,
          linkage is calculated for that region against itself.
      
      
      Severity: Major
      Found in lib/gamtools/cosegregation.py and 3 other locations - About 50 mins to fix
      lib/gamtools/cosegregation.py on lines 222..236
      lib/gamtools/cosegregation.py on lines 319..334
      lib/gamtools/cosegregation.py on lines 364..380

      Duplicated Code

      Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

      Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

      When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

      Tuning

      This issue has a mass of 36.

      We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

      The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

      If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

      See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

      Refactorings

      Further Reading

      Line too long (81 > 79 characters)
      Open

                  of all possible combinations of windows within the different regions.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (87 > 79 characters)
      Open

          :param segregation_file: Path to input :ref:`segregation table <segregation_table>`
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (89 > 79 characters)
      Open

          """Take a table of n columns and return the n-dimensional co-segregation frequencies.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (81 > 79 characters)
      Open

                  of all possible combinations of windows within the different regions.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (91 > 79 characters)
      Open

          n is the number of genomic windows (loci) and x is the number of samples. It calculates
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (82 > 79 characters)
      Open

          the number of times from 0 to n of the windows are all found in the same tube.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Ambiguous variable name 'l'
      Open

              segregation_data, l) for l in location_strings]
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Never use the characters 'l', 'O', or 'I' as variable names.

      In some fonts, these characters are indistinguishable from the
      numerals one and zero. When tempted to use 'l', use 'L' instead.
      
      Okay: L = 0
      Okay: o = 123
      Okay: i = 42
      E741: l = 0
      E741: O = 123
      E741: I = 42
      
      Variables can be bound in several other contexts, including class
      and function definitions, 'global' and 'nonlocal' statements,
      exception handlers, and 'with' and 'for' statements.
      In addition, we have a special handling for function parameters.
      
      Okay: except AttributeError as o:
      Okay: with lock as L:
      Okay: foo(l=12)
      Okay: for a in foo(l=12):
      E741: except AttributeError as O:
      E741: with lock as l:
      E741: global I
      E741: nonlocal l
      E741: def foo(l):
      E741: def foo(l=12):
      E741: l = foo(l=12)
      E741: for l in range(10):
      E742: class I(object):
      E743: def l(x):

      Line too long (92 > 79 characters)
      Open

          :param str segregation_file: Path to input :ref:`segregation table <segregation_table>`.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (88 > 79 characters)
      Open

          >>> get_output_file('/path/to/segregation_file.table', ['chr1'], 'dprime', 'txt.gz')
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (96 > 79 characters)
      Open

                  disequilibrium of all possible combinations of windows within the different regions.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (87 > 79 characters)
      Open

          :param list location_strings: One or more :ref:`location strings <location_string>`
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (82 > 79 characters)
      Open

          This is a pure python function, so it is relatively slow, but it can calculate
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (87 > 79 characters)
      Open

          :param str location_strings: One or more :ref:`location strings <location_string>`.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (99 > 79 characters)
      Open

          Three types of :ref:`proximity matrix <proximity_matrices>` are supported, 'cosegregation' (see
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (88 > 79 characters)
      Open

          :param list location_strings: One or more :ref:`location strings <location_string>`.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (81 > 79 characters)
      Open

                  of all possible combinations of windows within the different regions.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (81 > 79 characters)
      Open

                  of all possible combinations of windows within the different regions.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (90 > 79 characters)
      Open

          :returns: :ref:`proximity matrix <proximity_matrices>` giving the normalized linkage \
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (96 > 79 characters)
      Open

                  disequilibrium of all possible combinations of windows within the different regions.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Ambiguous variable name 'l'
      Open

              segregation_data, l) for l in location_strings]
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Never use the characters 'l', 'O', or 'I' as variable names.

      In some fonts, these characters are indistinguishable from the
      numerals one and zero. When tempted to use 'l', use 'L' instead.
      
      Okay: L = 0
      Okay: o = 123
      Okay: i = 42
      E741: l = 0
      E741: O = 123
      E741: I = 42
      
      Variables can be bound in several other contexts, including class
      and function definitions, 'global' and 'nonlocal' statements,
      exception handlers, and 'with' and 'for' statements.
      In addition, we have a special handling for function parameters.
      
      Okay: except AttributeError as o:
      Okay: with lock as L:
      Okay: foo(l=12)
      Okay: for a in foo(l=12):
      E741: except AttributeError as O:
      E741: with lock as l:
      E741: global I
      E741: nonlocal l
      E741: def foo(l):
      E741: def foo(l=12):
      E741: l = foo(l=12)
      E741: for l in range(10):
      E742: class I(object):
      E743: def l(x):

      Line too long (87 > 79 characters)
      Open

          :param list location_strings: One or more :ref:`location strings <location_string>`
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (81 > 79 characters)
      Open

          :param str matrix_type: Type of :ref:`proximity matrix <proximity_matrices>`\
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (94 > 79 characters)
      Open

          :returns: An n-dimensional contingency table giving the cosegregation frequencies of all \
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (80 > 79 characters)
      Open

          """Get the full linkage disequilibrium matrix for n regions, using optimized
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (89 > 79 characters)
      Open

                  '3D linkage is calculated following Hastings - Genetics (1984) 106:153-164. '
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (87 > 79 characters)
      Open

          :param str location_strings: One or more :ref:`location strings <location_string>`.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (88 > 79 characters)
      Open

          :param list location_strings: One or more :ref:`location strings <location_string>`.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (94 > 79 characters)
      Open

          :returns: :ref:`proximity matrix <proximity_matrices>` giving the linkage disequilibrium \
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (94 > 79 characters)
      Open

          :returns: :ref:`proximity matrix <proximity_matrices>` giving the linkage disequilibrium \
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Ambiguous variable name 'l'
      Open

              segregation_data, l) for l in location_strings]
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Never use the characters 'l', 'O', or 'I' as variable names.

      In some fonts, these characters are indistinguishable from the
      numerals one and zero. When tempted to use 'l', use 'L' instead.
      
      Okay: L = 0
      Okay: o = 123
      Okay: i = 42
      E741: l = 0
      E741: O = 123
      E741: I = 42
      
      Variables can be bound in several other contexts, including class
      and function definitions, 'global' and 'nonlocal' statements,
      exception handlers, and 'with' and 'for' statements.
      In addition, we have a special handling for function parameters.
      
      Okay: except AttributeError as o:
      Okay: with lock as L:
      Okay: foo(l=12)
      Okay: for a in foo(l=12):
      E741: except AttributeError as O:
      E741: with lock as l:
      E741: global I
      E741: nonlocal l
      E741: def foo(l):
      E741: def foo(l=12):
      E741: l = foo(l=12)
      E741: for l in range(10):
      E742: class I(object):
      E743: def l(x):

      Expected 2 blank lines after class or function definition, found 1
      Open

      MATRIX_TYPES = {
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Separate top-level function and class definitions with two blank lines.

      Method definitions inside a class are separated by a single blank
      line.
      
      Extra blank lines may be used (sparingly) to separate groups of
      related functions.  Blank lines may be omitted between a bunch of
      related one-liners (e.g. a set of dummy implementations).
      
      Use blank lines in functions, sparingly, to indicate logical
      sections.
      
      Okay: def a():\n    pass\n\n\ndef b():\n    pass
      Okay: def a():\n    pass\n\n\nasync def b():\n    pass
      Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
      Okay: default = 1\nfoo = 1
      Okay: classify = 1\nfoo = 1
      
      E301: class Foo:\n    b = 0\n    def bar():\n        pass
      E302: def a():\n    pass\n\ndef b(n):\n    pass
      E302: def a():\n    pass\n\nasync def b(n):\n    pass
      E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
      E303: def a():\n\n\n\n    pass
      E304: @decorator\n\ndef a():\n    pass
      E305: def a():\n    pass\na()
      E306: def a():\n    def b():\n        pass\n    def c():\n        pass

      Line too long (86 > 79 characters)
      Open

          :returns: :ref:`proximity matrix <proximity_matrices>` giving the co-segregation \
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (90 > 79 characters)
      Open

          :returns: :ref:`proximity matrix <proximity_matrices>` giving the normalized linkage \
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (81 > 79 characters)
      Open

          """Calculate the proximity matrix for the given genomic locations and save it
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (86 > 79 characters)
      Open

          :returns: :ref:`proximity matrix <proximity_matrices>` giving the co-segregation \
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (92 > 79 characters)
      Open

          :param str segregation_file: Path to input :ref:`segregation table <segregation_table>`.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (81 > 79 characters)
      Open

          :param str matrix_type: Type of :ref:`proximity matrix <proximity_matrices>`\
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Test for membership should be 'not in'
      Open

              if not ':' in loc_string:
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Negative comparison should be done using "not in" and "is not".

      Okay: if x not in y:\n    pass
      Okay: assert (X in Y or X is Z)
      Okay: if not (X in Y):\n    pass
      Okay: zz = x is not y
      E713: Z = not X in Y
      E713: if not X.B in Y:\n    pass
      E714: if not X is Y:\n    pass
      E714: Z = not X.B is Y

      Line too long (80 > 79 characters)
      Open

          Exception raised if segregation data contains anything other than 0s and 1s.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (95 > 79 characters)
      Open

          This function accepts an integer :class:`numpy array <numpy.ndarray>` of size n by x, where
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (86 > 79 characters)
      Open

          :returns: :ref:`proximity matrix <proximity_matrices>` giving the co-segregation \
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (86 > 79 characters)
      Open

          :param str location_strings: One or more :ref:`location strings <location_string>`
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (94 > 79 characters)
      Open

          >>> get_output_file('/path/to/segregation_file.table', ['chr1', 'chr2'], 'linkage', 'npz')
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (80 > 79 characters)
      Open

          :returns: Returns False if any regions contain invalid data, otherwise True.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (81 > 79 characters)
      Open

                  of all possible combinations of windows within the different regions.
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (86 > 79 characters)
      Open

          """Calculate the normalized pointwise mutual information (npmi) matrix for a given
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (99 > 79 characters)
      Open

          Three types of :ref:`proximity matrix <proximity_matrices>` are supported, 'cosegregation' (see
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (86 > 79 characters)
      Open

          >>> get_output_file('/path/to/segregation_file.table', ['chr1:10000000-20000000'],
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Line too long (86 > 79 characters)
      Open

          :param str location_strings: One or more :ref:`location strings <location_string>`
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      Ambiguous variable name 'l'
      Open

              segregation_data, l) for l in location_strings]
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Never use the characters 'l', 'O', or 'I' as variable names.

      In some fonts, these characters are indistinguishable from the
      numerals one and zero. When tempted to use 'l', use 'L' instead.
      
      Okay: L = 0
      Okay: o = 123
      Okay: i = 42
      E741: l = 0
      E741: O = 123
      E741: I = 42
      
      Variables can be bound in several other contexts, including class
      and function definitions, 'global' and 'nonlocal' statements,
      exception handlers, and 'with' and 'for' statements.
      In addition, we have a special handling for function parameters.
      
      Okay: except AttributeError as o:
      Okay: with lock as L:
      Okay: foo(l=12)
      Okay: for a in foo(l=12):
      E741: except AttributeError as O:
      E741: with lock as l:
      E741: global I
      E741: nonlocal l
      E741: def foo(l):
      E741: def foo(l=12):
      E741: l = foo(l=12)
      E741: for l in range(10):
      E742: class I(object):
      E743: def l(x):

      Line too long (95 > 79 characters)
      Open

          For each location string, find the rows of the :ref:`segregation table <segregation_table>`
      Severity: Minor
      Found in lib/gamtools/cosegregation.py by pep8

      Limit all lines to a maximum of 79 characters.

      There are still many devices around that are limited to 80 character
      lines; plus, limiting windows to 80 characters makes it possible to
      have several windows side-by-side.  The default wrapping on such
      devices looks ugly.  Therefore, please limit all lines to a maximum
      of 79 characters. For flowing long blocks of text (docstrings or
      comments), limiting the length to 72 characters is recommended.
      
      Reports error E501.

      There are no issues that match your filters.

      Category
      Status