mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-10-13 00:44:55 +08:00
92 lines
2.7 KiB
Python
92 lines
2.7 KiB
Python
#!/usr/bin/env python
|
|
from __future__ import print_function
|
|
|
|
import optparse
|
|
import sys
|
|
|
|
|
|
def stop_err(msg):
|
|
sys.exit(msg)
|
|
|
|
|
|
def main():
|
|
usage = """%prog [options]
|
|
|
|
options (listed below) default to 'None' if omitted
|
|
"""
|
|
parser = optparse.OptionParser(usage=usage)
|
|
|
|
parser.add_option(
|
|
"-a",
|
|
"--ascii",
|
|
action="store_true",
|
|
default=False,
|
|
help="Use ascii codes to defined ignored beginnings instead of raw characters",
|
|
)
|
|
|
|
parser.add_option(
|
|
"-q",
|
|
"--fastq",
|
|
action="store_true",
|
|
default=False,
|
|
help="The input data in fastq format. It selected the script skips every even line since they contain sequence ids",
|
|
)
|
|
|
|
parser.add_option(
|
|
"-i",
|
|
"--ignore",
|
|
help='A comma separated list on ignored beginnings (e.g., ">,@"), or its ascii codes (e.g., "60,42") if option -a is enabled',
|
|
)
|
|
|
|
parser.add_option("-s", "--start", type="int", default=0, help="Trim from beginning to here (1-based)")
|
|
|
|
parser.add_option("-e", "--end", type="int", default="0", help="Trim from here to the ned (1-based)")
|
|
|
|
parser.add_option(
|
|
"-f", "--file", dest="input_txt", default=False, help="Name of file to be chopped. STDIN is default"
|
|
)
|
|
|
|
parser.add_option(
|
|
"-c", "--column", type="int", dest="col", default="0", help="Column to chop. If 0 = chop the whole line"
|
|
)
|
|
|
|
options, args = parser.parse_args()
|
|
invalid_starts = []
|
|
|
|
if options.input_txt:
|
|
infile = open(options.input_txt)
|
|
else:
|
|
infile = sys.stdin
|
|
|
|
if options.ignore and options.ignore != "None":
|
|
invalid_starts = {chr(int(c)) if options.ascii else c for c in options.ignore.split(",")}
|
|
|
|
for i, line in enumerate(infile):
|
|
line = line.rstrip("\r\n")
|
|
if line:
|
|
if options.fastq and i % 2 == 0:
|
|
print(line)
|
|
continue
|
|
|
|
if line[0] not in invalid_starts:
|
|
if options.col == 0:
|
|
if options.end == 0:
|
|
line = line[options.start - 1 :]
|
|
else:
|
|
line = line[options.start - 1 : options.end]
|
|
else:
|
|
fields = line.split("\t")
|
|
if options.col > len(fields):
|
|
stop_err("Column %d does not exist. Check input parameters\n" % options.col)
|
|
|
|
if options.end == 0:
|
|
fields[options.col - 1] = fields[options.col - 1][options.start - 1 :]
|
|
else:
|
|
fields[options.col - 1] = fields[options.col - 1][options.start - 1 : options.end]
|
|
line = "\t".join(fields)
|
|
print(line)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|