Esempio n. 1
0
def loadLandscapeDataAlt(filenames, male=True, female=True, dataType=float):
    """
    Description:
        * Imports the information of all the nodes within an experiment's
            folder.
    In:
        * filenames: Dictionary with male/female filenames.
    Out:
        * Dictionary containing:
            "genotypes" [list -> strings]
            "landscape" [list -> numpyArrays]
    Notes:
        * NA
    """
    maleFilesNumber = len(filenames["male"])
    femaleFilesNumber = len(filenames["female"])
    maleFilesEqualFemales = (maleFilesNumber == femaleFilesNumber)
    filesExist = (maleFilesNumber >= 1 and femaleFilesNumber >= 1)
    # Select the appropriate aggregation scheme: male+female, male, female
    if (male and female) and maleFilesEqualFemales and filesExist:
        maleFilenames = filenames["male"]
        femaleFilenames = filenames["female"]
        genotypes = auxFun.readGenotypes(maleFilenames[0])
        nodesDataList = [None] * maleFilesNumber
        for i in range(0, maleFilesNumber):
            nodesDataList[i] = loadNodeDataAlt(maleFilenames[i],
                                               femaleFilenames[i],
                                               dataType=dataType)["population"]
        returnDictionary = {"genotypes": genotypes, "landscape": nodesDataList}
        return returnDictionary
    elif female and femaleFilesNumber >= 1:
        femaleFilenames = filenames["female"]
        genotypes = auxFun.readGenotypes(femaleFilenames[0])
        nodesDataList = [None] * femaleFilesNumber
        for i in range(0, femaleFilesNumber):
            nodesDataList[i] = loadNodeDataAlt(None,
                                               femaleFilenames[i],
                                               dataType=dataType)["population"]
        returnDictionary = {"genotypes": genotypes, "landscape": nodesDataList}
        return returnDictionary
    elif male and maleFilesNumber >= 1:
        maleFilenames = filenames["male"]
        genotypes = auxFun.readGenotypes(maleFilenames[0])
        nodesDataList = [None] * maleFilesNumber
        for i in range(0, maleFilesNumber):
            nodesDataList[i] = loadNodeDataAlt(maleFilenames[i],
                                               None,
                                               dataType=dataType)["population"]
        returnDictionary = {"genotypes": genotypes, "landscape": nodesDataList}
        return returnDictionary
    else:
        warnings.warn(
            '''No data was loaded because both male and female filenames
                are: None; or there are no files to load.''', Warning)
        return None
Esempio n. 2
0
def loadLandscapeDataEpi(
    filenames,
    male=True,
    female=True,
    dataType=float
):
    """
    Description:
        * Imports the information of all the nodes in filenames
    In:
        * filenames: List of paths to desired csv files
    Out:
        * Dictionary containing:
            "genotypes" [list -> strings]
            "landscape" [list -> numpyArrays]
    """
    if len(filenames) == 0:
        return
    genotypes = auxFun.readGenotypes(filenames[0])
    nodesDataList = []
    for f in filenames:
        data = loadNodeDataEpi(f, dataType)["population"]
        nodesDataList.append(data)

    returnDictionary = {
        "genotypes": genotypes,
        "landscape": nodesDataList
    }
    return returnDictionary
Esempio n. 3
0
def loadNodeDataEpi(
    filename,
    dataType=float,
    skipHeader=1,
    skipColumns=1
):
    """
    Description:
        * Loads the data given by filename
    In:
        * filename: path to csv file
        * dataType: To save memory/processing time if possible (int/float).
    Out:
        * Dictionary containing:
            "genotypes" [list -> strings]
            "population" [numpyArray]

    """
    genotypes = auxFun.readGenotypes(filename)
    data = np.genfromtxt(
            filename,
            dtype=dataType,
            skip_header=skipHeader,
            delimiter=",")
    returnDictionary = {
            "genotypes": genotypes,
            "population": data[:, skipColumns:]
        }
    return returnDictionary
Esempio n. 4
0
def loadNodeDataAlt(maleFilename=None,
                    femaleFilename=None,
                    dataType=float,
                    skipHeader=1,
                    skipColumns=1):
    """
    Description:
        * Loads the data for a single node in the files. If male and female
            filenames are provided, it sums them as a matrix operation.
            Avoids the use of np.readfromtxt, to avoid the overhead
    In:
        * maleFilename: Path to the male CSV file to process.
        * femaleFilename: Path to the female CSV file to process.
        * dataType: To save memory/processing time if possible (int/float).
    Out:
        * Dictionary containing:
            "genotypes" [list -> strings]
            "population" [numpyArray]
    Notes:
        * Timing information is dropped.
    """
    if (maleFilename is not None) and (femaleFilename is not None):
        genotypes = auxFun.readGenotypes(maleFilename)
        dataM = fileReader(maleFilename,
                           dtype=dataType,
                           skipHeader=skipHeader,
                           skipColumns=skipColumns)
        dataF = fileReader(femaleFilename,
                           dtype=dataType,
                           skipHeader=skipHeader,
                           skipColumns=skipColumns)
        if dataM.shape[0] > dataF.shape[0]:
            returnDictionary = {
                "genotypes": genotypes,
                "population": (np.resize(dataM, dataF.shape) + dataF)
            }
        else:
            returnDictionary = {
                "genotypes": genotypes,
                "population": (dataM + np.resize(dataF, dataM.shape))
            }
        return returnDictionary
    elif femaleFilename is not None:
        genotypes = auxFun.readGenotypes(femaleFilename)
        dataF = fileReader(femaleFilename,
                           dtype=dataType,
                           skipHeader=skipHeader,
                           skipColumns=skipColumns)
        returnDictionary = {"genotypes": genotypes, "population": dataF}
        return returnDictionary
    elif maleFilename is not None:
        genotypes = auxFun.readGenotypes(maleFilename)
        dataM = fileReader(maleFilename,
                           dtype=dataType,
                           skipHeader=skipHeader,
                           skipColumns=skipColumns)
        returnDictionary = {"genotypes": genotypes, "population": dataM}
        return returnDictionary
    else:
        warnings.warn(
            '''No data was loaded because both male and female filenames
            are: None''', Warning)
        return None