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
|
/* Generating, shuffling, and randomizing sequences.
*/
#ifndef eslRANDOMSEQ_INCLUDED
#define eslRANDOMSEQ_INCLUDED
#include "esl_config.h"
#include "esl_alphabet.h"
#include "esl_random.h"
/* Control flag passed to esl_rsq_Sample(): */
#define eslRSQ_SAMPLE_ALNUM 1 /* isalpha | isdigit */
#define eslRSQ_SAMPLE_ALPHA 2 /* islower | isupper */
#define eslRSQ_SAMPLE_LOWER 3 /* ASCII: a-z */
#define eslRSQ_SAMPLE_UPPER 4 /* ASCII: A-Z */
#define eslRSQ_SAMPLE_DIGIT 5 /* 0-9 */
#define eslRSQ_SAMPLE_XDIGIT 6 /* 0-9, a-f, A-F */
#define eslRSQ_SAMPLE_CNTRL 7 /* ASCII: 0..0x1F, plus 0x7F (DEL) */
#define eslRSQ_SAMPLE_GRAPH 8 /* isprint && ! ' ' (space) */
#define eslRSQ_SAMPLE_SPACE 9 /* ' ', '\f', '\n', '\r', '\t', '\v' */
#define eslRSQ_SAMPLE_BLANK 10 /* ' ', '\t' */
#define eslRSQ_SAMPLE_PRINT 11 /* ASCII: 0x20 ' ' through 0x7E '~' */
#define eslRSQ_SAMPLE_PUNCT 12 /* isprint && !(isspace || isalnum) */
/* 1. Generating simple random character strings. */
extern int esl_rsq_Sample(ESL_RANDOMNESS *rng, int allowed_chars_flag, int L, char **ret_s);
/* 2. Generating iid sequences. */
extern int esl_rsq_IID (ESL_RANDOMNESS *r, const char *alphabet, const double *p, int K, int L, char *s);
extern int esl_rsq_fIID (ESL_RANDOMNESS *r, const char *alphabet, const float *p, int K, int L, char *s);
/* 3. Shuffling sequences. */
extern int esl_rsq_CShuffle (ESL_RANDOMNESS *r, const char *s, char *shuffled);
extern int esl_rsq_CShuffleDP (ESL_RANDOMNESS *r, const char *s, char *shuffled);
extern int esl_rsq_CShuffleKmers (ESL_RANDOMNESS *r, const char *s, int K, char *shuffled);
extern int esl_rsq_CReverse (const char *s, char *rev);
extern int esl_rsq_CShuffleWindows(ESL_RANDOMNESS *r, const char *s, int w, char *shuffled);
/* 4. Randomizing sequences */
extern int esl_rsq_CMarkov0 (ESL_RANDOMNESS *r, const char *s, char *markoved);
extern int esl_rsq_CMarkov1 (ESL_RANDOMNESS *r, const char *s, char *markoved);
/* 5. Generating iid sequences (digital mode). */
extern int esl_rsq_xIID (ESL_RANDOMNESS *r, const double *p, int K, int L, ESL_DSQ *dsq);
extern int esl_rsq_xfIID (ESL_RANDOMNESS *r, const float *p, int K, int L, ESL_DSQ *dsq);
extern int esl_rsq_SampleDirty(ESL_RANDOMNESS *rng, ESL_ALPHABET *abc, double **byp_p, int L, ESL_DSQ *dsq);
/* 6. Shuffling sequences (digital mode). */
extern int esl_rsq_XShuffle (ESL_RANDOMNESS *r, const ESL_DSQ *dsq, int L, ESL_DSQ *shuffled);
extern int esl_rsq_XShuffleDP (ESL_RANDOMNESS *r, const ESL_DSQ *dsq, int L, int K, ESL_DSQ *shuffled);
extern int esl_rsq_XShuffleKmers (ESL_RANDOMNESS *r, const ESL_DSQ *dsq, int L, int K, ESL_DSQ *shuffled);
extern int esl_rsq_XReverse(const ESL_DSQ *dsq, int L, ESL_DSQ *rev);
extern int esl_rsq_XShuffleWindows(ESL_RANDOMNESS *r, const ESL_DSQ *dsq, int L, int w, ESL_DSQ *shuffled);
/* 7. Randomizing sequences (digital mode) */
extern int esl_rsq_XMarkov0 (ESL_RANDOMNESS *r, const ESL_DSQ *dsq, int L, int K, ESL_DSQ *markoved);
extern int esl_rsq_XMarkov1 (ESL_RANDOMNESS *r, const ESL_DSQ *dsq, int L, int K, ESL_DSQ *markoved);
#endif /*eslRANDOMSEQ_INCLUDED*/
|