consolidated go and scala repos into this repo as well

This commit is contained in:
Fizzizist
2025-01-04 16:03:27 -05:00
parent af2ce045ec
commit 8d4cc2b83c
20 changed files with 535 additions and 0 deletions

86
go/pkg/io/file_tools.go Normal file
View File

@@ -0,0 +1,86 @@
package io
import (
"bufio"
"fmt"
"os"
"strings"
)
func FileToStringArray(filename string) ([]string, error) {
file, err := os.Open(filename)
if err != nil {
return nil, err
}
defer file.Close()
scanner := bufio.NewScanner(file)
scanner.Split(bufio.ScanLines)
var fileLines []string
for scanner.Scan() {
fileLines = append(fileLines, scanner.Text())
}
if err := scanner.Err(); err != nil {
return nil, err
}
file.Close()
return fileLines, nil
}
func WriteStringsToFile(content []string, filepath string) error {
file, err := os.Create(filepath)
if err != nil {
return err
}
w := bufio.NewWriter(file)
for _, line := range content {
_, err = fmt.Fprintln(w, line)
if err != nil {
return err
}
}
if err = w.Flush(); err != nil {
return err
}
if err = file.Close(); err != nil {
return err
}
return nil
}
// ParseFasta parses a .fasta formatted file returning a list of labels and a list of
// content in separate string arrays.
func ParseFasta(filename string) ([]string, []string, error) {
lines, err := FileToStringArray(filename)
if err != nil {
return nil, nil, err
}
var labels []string
var content []string
var currString []string
for _, line := range lines {
if line[0] == '>' {
labels = append(labels, line)
if len(currString) > 0 {
content = append(content, strings.Join(currString, ""))
currString = []string{}
}
continue
}
currString = append(currString, line)
}
if len(currString) > 0 {
content = append(content, strings.Join(currString, ""))
}
return labels, content, nil
}