Skip to content

Commit

Permalink
Fix file_type assignment for input_files (#44)
Browse files Browse the repository at this point in the history
* Add file_type param to createSamplesReqInputFile

* create type FileType string with string constants
* assign file type based on sampleOptions

* define FileType in createSamplesReqInputFile as string

* Cast FileType as string when building createSamplesReqInputFile struct

* Add comment noting the FileType constant must be synced with CZID InputFile model constants

* default to FASTQ filetype, change if options present

* Rename ReferenceAccessionFileType to ReferenceSequenceFileType

* Store filename and type together in struct when accessed from sampleFiles
  • Loading branch information
lvreynoso committed May 26, 2023
1 parent f9571eb commit 6873982
Showing 1 changed file with 41 additions and 21 deletions.
62 changes: 41 additions & 21 deletions pkg/czid/uploadSamples.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,18 @@ type UploadInfo struct {
}

// Must match file type constants present in CZID's InputFile model
type FileType string
type inputFileType string
const (
FASTQFileType FileType = "fastq"
PrimerBedFileType FileType = "primer_bed"
ReferenceSequenceFileType FileType = "reference_sequence"
FASTQFileType inputFileType = "fastq"
PrimerBedFileType inputFileType = "primer_bed"
ReferenceSequenceFileType inputFileType = "reference_sequence"
)

type inputFileMetadata struct {
Filename string
FileType inputFileType
}

// CreateSamples creates samples on the back end and returns the necessary information to upload their files
func (c *Client) CreateSamples(
projectID int,
Expand All @@ -79,23 +84,43 @@ func (c *Client) CreateSamples(

for sampleName := range samplesMetadata {
files := sampleFiles[sampleName]
var filenames []string
var filesMetadata []inputFileMetadata
if len(files.Single) > 0 {
filenames = []string{StripLaneNumber(files.Single[0])}
metadata := inputFileMetadata {
Filename: StripLaneNumber(files.Single[0]),
FileType: FASTQFileType,
}
filesMetadata = []inputFileMetadata{metadata}
} else {
filenames = []string{StripLaneNumber(files.R1[0]), StripLaneNumber(files.R2[0])}
metadataR1 := inputFileMetadata {
Filename: StripLaneNumber(files.R1[0]),
FileType: FASTQFileType,
}
metadataR2 := inputFileMetadata {
Filename: StripLaneNumber(files.R2[0]),
FileType: FASTQFileType,
}
filesMetadata = []inputFileMetadata {metadataR1, metadataR2}
}

if len(files.ReferenceFasta) > 0 {
filenames = append(filenames, files.ReferenceFasta[0])
metadata := inputFileMetadata {
Filename: files.ReferenceFasta[0],
FileType: ReferenceSequenceFileType,
}
filesMetadata = append(filesMetadata, metadata)
}
if len(files.PrimerBed) > 0 {
filenames = append(filenames, files.PrimerBed[0])
metadata := inputFileMetadata {
Filename: files.PrimerBed[0],
FileType: PrimerBedFileType,
}
filesMetadata = append(filesMetadata, metadata)
}

sample := CreateSamplesReqSample{
HostGenomeName: samplesMetadata[sampleName].HostGenome,
InputFileAttributes: make([]createSamplesReqInputFile, len(filenames)),
InputFileAttributes: make([]createSamplesReqInputFile, len(filesMetadata)),
Name: sampleName,
ProjectID: projectID,
Status: "created",
Expand All @@ -118,31 +143,26 @@ func (c *Client) CreateSamples(
sample.ClearLabs = &sampleOptions.ClearLabs
}

filetype := FASTQFileType

if sampleOptions.ReferenceAccession != "" {
sample.ReferenceAccession = &sampleOptions.ReferenceAccession
filetype = ReferenceSequenceFileType
}

if sampleOptions.ReferenceFasta != "" {
referenceFasta := filepath.Base(sampleOptions.ReferenceFasta)
sample.ReferenceFasta = &referenceFasta
filetype = ReferenceSequenceFileType
}

if sampleOptions.PrimerBed != "" {
primerBed := filepath.Base(sampleOptions.PrimerBed)
sample.PrimerBed = &primerBed
filetype = PrimerBedFileType
}

for i, filename := range filenames {
for i, metadata := range filesMetadata {
sample.InputFileAttributes[i] = createSamplesReqInputFile{
FileType: string(filetype),
Name: filepath.Base(filename),
Parts: filepath.Base(filename),
Source: filepath.Base(filename),
FileType: string(metadata.FileType),
Name: filepath.Base(metadata.Filename),
Parts: filepath.Base(metadata.Filename),
Source: filepath.Base(metadata.Filename),
SourceType: "local",
UploadClient: "cli",
}
Expand All @@ -161,4 +181,4 @@ func (c *Client) CreateSamples(
}

return res.Samples, err
}
}

0 comments on commit 6873982

Please sign in to comment.