Zip and Skip Tries
Loading...
Searching...
No Matches
genetics.cuh
Go to the documentation of this file.
1
12#pragma once
13
14#include "BitString.cuh"
15#include "nucleotide.hpp"
16
17#include <filesystem>
18#include <istream>
19#include <string>
20#include <vector>
21
29
37namespace genetics
38{
40 static const std::string GENETIC_DIRECTORY = "genetic/";
41
43 static const std::string VIRUS_DIRECTORY = GENETIC_DIRECTORY + "virus/";
44
46 static const std::string ABC_HUMI_DIRECTORY = GENETIC_DIRECTORY + "ABC-HuMi/";
47
49 static const std::string DNA_EXTENSION = ".dna";
50
52 static const std::string DNA_BIN_EXTENSION = ".dna.bin";
53
55 static const std::string DNA_BIN_COMBINED_EXTENSION = ".dna.bin.combined";
56
58 static const std::string DNA_BIN_SIZES_EXTENSION = ".dna.bin.sizes";
59
61 static const std::string GBK_EXTENSION = ".gbk";
62
64 static const std::string FNA_EXTENSION = ".fna";
65
73 enum class FileType
74 {
75 GBK,
76 FNA,
77 DNA,
78 DNA_BIN,
80 UNKNOWN
81 };
82
90 Gene from_gbk(const std::string& filename);
91
99 Gene from_fna(const std::string& filename);
100
108 Gene from_dna(const std::string& filename);
109
119 Gene from_file(const std::string& filename);
120
128 Gene from_file(const std::filesystem::path& path);
129
137 Gene from_file(const std::filesystem::directory_entry& entry);
138
145 void to_dna(const Gene& gene, const std::string& filename);
146
153 std::vector<Gene> from_directory(const std::string& dirname);
154
162 std::vector<Gene> from_directory(const std::string& dirname, FileType type);
163
169 std::vector<std::string> get_dna_strings_from_directory(const std::string& dirname);
170
176 FileType get_file_type(const std::string& filename);
177
184 FileType get_file_type(const std::filesystem::path& path);
185
192 FileType get_file_type(const std::filesystem::directory_entry& entry);
193
200 Gene from_stream(std::istream& stream);
201
206 std::vector<std::filesystem::path> get_virus_nucleotide_paths();
207
215 void combine_dna_bin_files(const std::string& dirname, const std::string& combined_filename);
216
226 {
227 public:
233 GeneManager(const std::string& path);
234
239 ~GeneManager();
240
245 std::vector<Gene> all_genes() const;
246
252 std::vector<Gene> get_random_genes(size_t count) const;
253 private:
259 struct GeneInfo
260 {
261 std::string name;
262 std::streampos position;
263 size_t size;
264 };
265
266 std::string m_path;
267 mutable std::ifstream m_file;
268 std::vector<GeneInfo> m_gene_infos;
269
275 void save_sizes();
276
283 void load_sizes();
284 };
285};
Defines the BitString class for compact character string storage and comparison.
A class to store strings compactly into integers, packing multiple characters into a single word.
Definition BitString.cuh:58
T * alloc_to_device(size_t size)
Allocates memory on the CUDA device.
BitString< Nucleotide, 2 > Gene
A specialized BitString for representing genetic sequences.
Definition genetics.cuh:28
Contains utilities for working with genetic data and file formats.
Gene from_file(const std::string &filename)
Loads a gene from a file with automatic format detection.
Definition genetics.cu:284
static const std::string DNA_BIN_COMBINED_EXTENSION
File extension for combined binary DNA files.
Definition genetics.cuh:55
Gene from_gbk(const std::string &filename)
Loads a gene from a GenBank format file.
Definition genetics.cu:71
static const std::string DNA_BIN_SIZES_EXTENSION
File extension for binary DNA file size information.
Definition genetics.cuh:58
std::vector< std::filesystem::path > get_virus_nucleotide_paths()
Gets paths to all virus nucleotide files in the virus directory.
Definition genetics.cu:323
Gene from_dna(const std::string &filename)
Loads a gene from a plain text DNA format file.
Definition genetics.cu:152
void to_dna(const Gene &gene, const std::string &filename)
Saves a gene to a plain text DNA format file.
Definition genetics.cu:132
static const std::string GBK_EXTENSION
File extension for GenBank format files.
Definition genetics.cuh:61
static const std::string DNA_EXTENSION
File extension for plain text DNA files.
Definition genetics.cuh:49
static const std::string FNA_EXTENSION
File extension for FASTA nucleotide format files.
Definition genetics.cuh:64
FileType get_file_type(const std::string &filename)
Determines the file type based on its filename extension.
Definition genetics.cu:256
std::vector< std::string > get_dna_strings_from_directory(const std::string &dirname)
Extracts DNA strings from all supported files in a directory.
Definition genetics.cu:212
Gene from_stream(std::istream &stream)
Loads a gene from an input stream.
Definition genetics.cu:36
static const std::string VIRUS_DIRECTORY
Path to the virus genome data directory.
Definition genetics.cuh:43
static const std::string GENETIC_DIRECTORY
Path to the genetic data directory.
Definition genetics.cuh:40
Gene from_fna(const std::string &filename)
Loads a gene from a FASTA nucleotide format file.
Definition genetics.cu:107
FileType
Enumerates the supported genetic file formats.
Definition genetics.cuh:74
@ DNA
Plain text DNA format (.dna)
@ UNKNOWN
Unknown or unsupported file format.
@ FNA
FASTA nucleotide format (.fna)
@ DNA_BIN_COMBINED
Combined binary DNA format (.dna.bin.combined)
@ DNA_BIN
Binary DNA format (.dna.bin)
@ GBK
GenBank format (.gbk)
std::vector< Gene > from_directory(const std::string &dirname)
Loads all genes from files in a directory with automatic format detection.
Definition genetics.cu:183
static const std::string DNA_BIN_EXTENSION
File extension for binary DNA files.
Definition genetics.cuh:52
void combine_dna_bin_files(const std::string &dirname, const std::string &combined_filename)
Combines multiple binary DNA files into a single combined file.
Definition genetics.cu:335
static const std::string ABC_HUMI_DIRECTORY
Path to the ABC-HuMi dataset directory.
Definition genetics.cuh:46
Defines nucleotide representation and related utility functions.
Structure to track information about a gene in the combined file.
Definition genetics.cuh:260
std::string name
Name or identifier of the gene.
Definition genetics.cuh:261
std::streampos position
File position where the gene data begins.
Definition genetics.cuh:262
size_t size
Size of the gene data in bytes.
Definition genetics.cuh:263
Manages efficient loading of multiple genetic sequences from a combined file.
Definition genetics.cuh:226
std::string m_path
Path to the combined binary file.
Definition genetics.cuh:266
void load_sizes()
Loads gene size information from the companion file.
Definition genetics.cu:500
std::vector< GeneInfo > m_gene_infos
Index of all genes in the combined file.
Definition genetics.cuh:268
std::vector< Gene > get_random_genes(size_t count) const
Retrieves a random subset of genes from the combined file.
Definition genetics.cu:543
void save_sizes()
Saves the size information of genes to a companion file.
Definition genetics.cu:472
~GeneManager()
Destructor for GeneManager.
Definition genetics.cu:522
std::ifstream m_file
File stream for reading gene data (mutable to allow const methods to read)
Definition genetics.cuh:267
std::vector< Gene > all_genes() const
Retrieves all genes from the combined file.
Definition genetics.cu:527