# from obitools3.apps.progress cimport ProgressBar # @UnresolvedImport # from obitools3.dms.dms import OBIDMS # TODO cimport doesn't work # from obitools3.utils cimport bytes2str # # import time # import re def run(config): pass # __title__="Export a NUC_SEQS view to a fasta or fastq file" # # # default_config = { 'inputview' : None, # } # # def addOptions(parser): # # # TODO put this common group somewhere else but I don't know where # group=parser.add_argument_group('DMS and view options') # # group.add_argument('--default-dms','-d', # action="store", dest="obi:defaultdms", # metavar='', # default=None, # type=str, # help="Name of the default DMS for reading and writing data.") # # group.add_argument('--input-view','-i', # action="store", dest="obi:inputview", # metavar='', # default=None, # type=str, # help="Name of the input view, either raw if the view is in the default DMS," # " or in the form 'dms:view' if it is in another DMS.") # # group=parser.add_argument_group('obi export specific options') # # group.add_argument('--format','-f', # action="store", dest="export:format", # metavar='', # default="fasta", # type=str, # help="Export in the format , 'fasta' or 'fastq'. Default: 'fasta'.") # TODO export in csv # # def run(config): # # # TODO import doesn't work # NUC_SEQUENCE_COLUMN = "NUC_SEQ" # ID_COLUMN = "ID" # DEFINITION_COLUMN = "DEFINITION" # QUALITY_COLUMN = "QUALITY" # # special_columns = [NUC_SEQUENCE_COLUMN, ID_COLUMN, DEFINITION_COLUMN, QUALITY_COLUMN] # # # Open DMS # d = OBIDMS(config['obi']['defaultdms']) # # # Open input view # iview = d.open_view(config['obi']['inputview']) # # print(iview.type) # # # TODO check that the view has the type NUC_SEQS # if ((config['export']['format'] == "fasta") or (config['export']['format'] == "fastq")) and (iview.type != "NUC_SEQS_VIEW") : # TODO find a way to import those macros # raise Exception("Error: the view to export in fasta or fastq format is not a NUC_SEQS view") # # # Initialize the progress bar # pb = ProgressBar(len(iview), config, seconde=5) # # i=0 # for seq in iview : # pb(i) # # toprint = ">"+seq.id+" " # # for col_name in seq : # if col_name not in special_columns : # toprint = toprint + col_name + "=" + str(seq[col_name]) + "; " # # if DEFINITION_COLUMN in seq : # toprint = toprint + seq.definition # # nucseq = bytes2str(seq.nuc_seq) # # if config['export']['format'] == "fasta" : # nucseq = re.sub("(.{60})", "\\1\n", nucseq, 0, re.DOTALL) # # toprint = toprint + "\n" + nucseq # # if config['export']['format'] == "fastq" : # toprint = toprint + "\n" + "+" + "\n" + seq.get_str_quality() # # print(toprint) # i+=1 # # iview.close() # d.close() # # print("Done.") # # # # # # # #