-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrandomfasta.py
More file actions
62 lines (44 loc) · 1.58 KB
/
randomfasta.py
File metadata and controls
62 lines (44 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 15 22:03:10 2024
@author: cserrano
"""
import random
import argparse
def parse_arguments():
"""
Parsea los argumentos de línea de comandos.
Returns:
Namespace: El espacio de nombres con los argumentos parseados.
"""
parser = argparse.ArgumentParser(
prog='randomfasta',
description='Random Fasta Generator'
)
parser.add_argument('-t', '--total', required=True, type=int, help='Número de secuencias')
parser.add_argument('-l', '--large', required=True, type=int, help='Largo de secuencias')
parser.add_argument('-n', '--nuc', required=False, default='ATGC', type=str, help='Asigna set de letras')
parser.add_argument('-s', '--seed', type=int, help='Random seed')
return parser.parse_args()
def fastagenerator(name, large, nuc):
"""
Genera una secuencia aleatoria en formato FASTA.
Args:
name (int): Id de secuencia.
large (int): Longitud de la secuencia.
nuc (str): Set de letras para generar la secuencia.
Returns:
str: Secuencia en formato FASTA.
"""
seq = ''.join(random.choices(nuc, k=large))
return f'>random_{name}\n{seq}'
def main():
"""
Genera secuencias aleatorias en formato FASTA e imprime en consola.
"""
args = parse_arguments()
random.seed(args.seed)
sequences = [fastagenerator(i, args.large, args.nuc) for i in range(1, args.total + 1)]
print('\n'.join(sequences))
if __name__ == "__main__":
main()