castcollab / tesserae2

Tesserae2: Fast recombination-aware global and local alignment.
Other
3 stars 0 forks source link

tesserae.py needs a bunch of cleanup #17

Open winni2k opened 4 years ago

winni2k commented 4 years ago

Running pylint -d C0330,C0114,C0116 src returns the messages below. I have removed a few categories of messages that I don't think are relevant right now using the -d option. I think the majority of messages below need addressing. The W* codes are the most pressing.

************* Module tesserae
src/tesserae.py:17:0: C0103: Constant name "convert" doesn't conform to UPPER_CASE naming style (invalid-name)
src/tesserae.py:70:8: C0103: Attribute name "piM" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:71:8: C0103: Attribute name "piI" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:72:8: C0103: Attribute name "mm" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:73:8: C0103: Attribute name "gm" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:74:8: C0103: Attribute name "dm" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:76:8: C0103: Attribute name "lpiM" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:77:8: C0103: Attribute name "lpiI" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:91:8: C0103: Attribute name "editTrack" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:163:8: C0103: Attribute name "sm" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:171:8: C0103: Attribute name "si" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:45:0: C0115: Missing class docstring (missing-class-docstring)
src/tesserae.py:45:0: R0205: Class 'Tesserae' inherits from object, can be safely removed from bases in python3 (useless-object-inheritance)
src/tesserae.py:45:0: R0902: Too many instance attributes (50/7) (too-many-instance-attributes)
src/tesserae.py:51:4: R0913: Too many arguments (7/5) (too-many-arguments)
src/tesserae.py:184:8: C0200: Consider using enumerate instead of iterating with range and len (consider-using-enumerate)
src/tesserae.py:189:4: R0914: Too many local variables (19/15) (too-many-locals)
src/tesserae.py:192:8: C0103: Variable name "l1" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:214:8: C0103: Variable name "cp" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:221:8: C0103: Variable name "l2" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:249:12: C0103: Variable name "cp" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:256:4: C0103: Argument name "cp" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:259:12: C0103: Variable name "seqName" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:261:8: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:278:8: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:299:8: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:320:16: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:331:16: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:336:16: C0103: Variable name "c" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:337:16: C0103: Variable name "c" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:256:4: R0912: Too many branches (19/12) (too-many-branches)
src/tesserae.py:256:4: R0915: Too many statements (63/50) (too-many-statements)
src/tesserae.py:354:4: C0103: Argument name "l1" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:354:4: C0103: Argument name "cp" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:354:4: R0913: Too many arguments (6/5) (too-many-arguments)
src/tesserae.py:392:4: C0103: Argument name "l1" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:392:4: R0913: Too many arguments (25/5) (too-many-arguments)
src/tesserae.py:392:4: R0914: Too many local variables (52/15) (too-many-locals)
src/tesserae.py:423:8: C0103: Variable name "C" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:434:8: C0103: Variable name "A" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:457:8: C0103: Variable name "B" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:405:8: W0613: Unused argument 'pos_target_trace' (unused-argument)
src/tesserae.py:407:8: W0613: Unused argument 'l1' (unused-argument)
src/tesserae.py:409:8: W0613: Unused argument 'mem_limit' (unused-argument)
src/tesserae.py:417:8: W0613: Unused argument 'store_states' (unused-argument)
src/tesserae.py:504:4: C0103: Argument name "l1" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:504:4: C0103: Argument name "l0" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:504:4: R0913: Too many arguments (12/5) (too-many-arguments)
src/tesserae.py:504:4: R0914: Too many local variables (33/15) (too-many-locals)
src/tesserae.py:569:49: C0103: Variable name "p" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:662:8: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae.py:96:8: W0201: Attribute 'nseq' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:97:8: W0201: Attribute 'maxl' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:98:8: W0201: Attribute 'qlen' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:111:16: W0201: Attribute 'states_to_save' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:114:16: W0201: Attribute 'states_to_save' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:112:16: W0201: Attribute 'traceback_limit' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:115:16: W0201: Attribute 'traceback_limit' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:119:12: W0201: Attribute 'traceback_limit' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:121:8: W0201: Attribute 'vt_m' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:122:8: W0201: Attribute 'vt_i' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:123:8: W0201: Attribute 'vt_d' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:125:8: W0201: Attribute 'tb_m' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:128:8: W0201: Attribute 'tb_i' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:131:8: W0201: Attribute 'tb_d' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:136:12: W0201: Attribute 'saved_vt_m' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:141:12: W0201: Attribute 'saved_vt_i' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:146:12: W0201: Attribute 'saved_vt_d' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:151:12: W0201: Attribute 'saved_states' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:153:8: W0201: Attribute 'maxpath_copy' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:154:8: W0201: Attribute 'maxpath_state' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:155:8: W0201: Attribute 'maxpath_pos' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:157:8: W0201: Attribute 'tmp' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:158:8: W0201: Attribute 'tb_divisor' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:160:8: W0201: Attribute 'llk' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:595:12: W0201: Attribute 'llk' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:161:8: W0201: Attribute 'combined_llk' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:163:8: W0201: Attribute 'sm' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:164:8: W0201: Attribute 'lsm' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:171:8: W0201: Attribute 'si' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:172:8: W0201: Attribute 'lsi' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:178:8: W0201: Attribute 'path' defined outside __init__ (attribute-defined-outside-init)
src/tesserae.py:2:0: C0411: standard import "import sys" should be placed before "import numpy as np" (wrong-import-order)

------------------------------------------------------------------
Your code has been rated at 7.66/10 (previous run: 7.63/10, +0.03)
winni2k commented 4 years ago

I will likely get started on this after #6 has been merged. It would be great if everyone could take look through this list and keep it in mind while coding up new things 👀

winni2k commented 4 years ago

Thanks to @jonn-smith many of the warnings have been fixed! We still have some variable naming issues...

Here is the current list:

************* Module tesserae.tesserae
src/tesserae/tesserae.py:88:9: E1101: Module 'pysam' has no 'FastxFile' member (no-member)
src/tesserae/tesserae.py:88:45: C0103: Variable name "fh" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:125:8: C0103: Attribute name "piM" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:126:8: C0103: Attribute name "piI" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:127:8: C0103: Attribute name "mm" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:128:8: C0103: Attribute name "gm" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:129:8: C0103: Attribute name "dm" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:131:8: C0103: Attribute name "lpiM" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:132:8: C0103: Attribute name "lpiI" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:173:8: C0103: Attribute name "sm" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:175:8: C0103: Attribute name "si" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:179:8: C0103: Attribute name "editTrack" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:97:0: R0902: Too many instance attributes (53/7) (too-many-instance-attributes)
src/tesserae/tesserae.py:106:4: R0913: Too many arguments (7/5) (too-many-arguments)
src/tesserae/tesserae.py:106:4: R0915: Too many statements (58/50) (too-many-statements)
src/tesserae/tesserae.py:314:4: R0914: Too many local variables (20/15) (too-many-locals)
src/tesserae/tesserae.py:334:8: C0103: Variable name "l1" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:359:8: C0103: Variable name "cp" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:367:8: C0103: Variable name "l2" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:399:12: C0103: Variable name "cp" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:410:4: C0103: Argument name "cp" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:421:8: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:441:8: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:463:8: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:488:16: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:503:16: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:508:16: C0103: Variable name "c" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:509:16: C0103: Variable name "c" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:410:4: R0912: Too many branches (19/12) (too-many-branches)
src/tesserae/tesserae.py:410:4: R0915: Too many statements (63/50) (too-many-statements)
src/tesserae/tesserae.py:528:4: C0103: Argument name "l1" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:528:4: C0103: Argument name "cp" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:528:4: R0913: Too many arguments (6/5) (too-many-arguments)
src/tesserae/tesserae.py:566:4: C0103: Argument name "l1" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:566:4: R0913: Too many arguments (25/5) (too-many-arguments)
src/tesserae/tesserae.py:566:4: R0914: Too many local variables (52/15) (too-many-locals)
src/tesserae/tesserae.py:597:8: C0103: Variable name "C" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:610:8: C0103: Variable name "A" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:633:8: C0103: Variable name "B" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:579:8: W0613: Unused argument 'pos_target_trace' (unused-argument)
src/tesserae/tesserae.py:581:8: W0613: Unused argument 'l1' (unused-argument)
src/tesserae/tesserae.py:583:8: W0613: Unused argument 'mem_limit' (unused-argument)
src/tesserae/tesserae.py:591:8: W0613: Unused argument 'store_states' (unused-argument)
src/tesserae/tesserae.py:680:4: C0103: Argument name "l1" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:680:4: C0103: Argument name "l0" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:680:4: R0913: Too many arguments (12/5) (too-many-arguments)
src/tesserae/tesserae.py:680:4: R0914: Too many local variables (33/15) (too-many-locals)
src/tesserae/tesserae.py:742:16: C0415: Import outside toplevel (multiprocessing.pool) (import-outside-toplevel)
src/tesserae/tesserae.py:744:49: C0103: Variable name "p" doesn't conform to snake_case naming style (invalid-name)
src/tesserae/tesserae.py:839:8: C0103: Variable name "sb" doesn't conform to snake_case naming style (invalid-name)
jonn-smith commented 4 years ago

I have similar issues with the pysam module in the CLI code as well. I'm not sure how to fix them - the module most certainly does exist.

winni2k commented 4 years ago

I think you are referring to E1101, which is the first message? This is almost certainly a false positive. E1101 is also triggered for attributes that are created dynamically, and I think that is a common coding style for an API that interfaces with C code.

I'll set up a .pylintrc file and add pysam as an exclusion for E1101.

winni2k commented 4 years ago

Done. If you are still having issues with pysam, try rebuilding your test environment with tox -r or tox -re lint.