Skip to content

averagehat/mypy-extras

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mini-Packages

  • args.py
  • hypotypes.py (now a PR to DRMacIver/hypothesis)
  • pipeline.py

pipeline.py

Define file inputs. (Alternatively subclass typing.io.TextIO to be okay with sdin/stdout)

from path import Path
class Fastq(Path): pass
class Fasta(Path): pass 
PairedEnd = Tuple[Fastq, Fastq]

Define options

from typing import *
#sort of like an Enums in other langauges
MiSeq = NamedTuple("MiSeq", [])
Roche454 = NamedTuple("Roche454", [])
IonTorrent = NamedTuple("IonTorrent", []) 

Platform = Union[MiSeq,Roche454,IonTorrent]

TrimOpts = NamedTuple('TrimOpts', 
        [('paired',bool), 
         ('trim_n', bool),
         ('q', Optional[int]),
         ('removebases', Optional[int]),
         ('platforms', List[Platform])])

Define some functions to process the files based on the options.

def trim_reads(f1: Fastq, f2: Fastq, opts: TrimOpts) -> PairedEnd:
    pass # do stuff with input

def fasta_to_fastq(fs: Fasta) -> Fastq:
    pass # do stuff with input

Run

if __name__ == '__main__':
    command = basic_command(trim_reads)
    command.run()
    command = command.sub_commands(trim_reads, prep_fastq)
    command.run()

args.py

Usage statement

<Fastq> <Fastq> --platforms ( <MiSeq> | <Roche454> | <IonTorrent> )... --trim_n  [ --removebases <int> ] --paired  --adapters <str>... [ --q <int> ]

old version (in old/gadt.py) (using pyparsing) works if you wrap everything that's required in the NamedTuple. Combining with positional arguments not yet working. Also, Each didn't seem to work correctly without hanging forever. New version uses argparse.

###TODO: It should be possible to automate commandline testing using hypotypes + typarser. All possible commandline-combinations would get run and you could check the properties one at a time, i.e., --csv flag means output should be in csv format, etc. This could report the exact commandline string.

parse/unparse tests for the parser/usage generator

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages