Skip to content

csExport

Short Description

Users can utilize the csExport function to store the contents of the csObject to a .CSV file.

Keep in mind that the presence of multiple intermediate files in the object will result in the production of several CSV files.

Function

csExport(csObject, projectDir, fileName=None, raw=False, CellID='CellID', verbose=True)

Parameters:

Name Type Description Default
csObject anndata

Pass the csObject loaded into memory or a path to the csObject file (.h5ad).

required
projectDir str

Provide the path to the output directory. The result will be located at projectDir/CSPOT/csExport/.

required
fileName str

Specify the name of the CSV output file. If you don't provide a file name, t he default name csExport.csv will be assigned.

None
raw bool

If True raw data will be returned instead of the CSPOT scaled data.

False
CellId str

Specify the column name that holds the cell ID (a unique name given to each cell).

required
verbose bool

If True, print detailed information about the process to the console.

True

Returns:

Type Description

CSV files (.csv): The .csv files can be found under projectDir/CSPOT/csExport/

Example
# path to files needed for csExport
projectDir = '/Users/aj/Documents/cspotExampleData'
csObject = projectDir + '/CSPOT/csObject/exampleImage_cspotPredict.ome.h5ad'

cs.csExport(csObject,
       projectDir,
       fileName=None,
       raw=False,
       CellID='CellID',
       verbose=True)

# Same function if the user wants to run it via Command Line Interface
python csExport.py             --csObject /Users/aj/Documents/cspotExampleData/CSPOT/cspotOutput/exampleImage_cspotPredict.ome.h5ad             --projectDir /Users/aj/Documents/cspotExampleData
Source code in cspot/csExport.py
 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
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
def csExport(
    csObject, projectDir, fileName=None, raw=False, CellID="CellID", verbose=True
):
    """
Parameters:
    csObject (anndata):
        Pass the `csObject` loaded into memory or a path to the `csObject` 
        file (.h5ad).

    projectDir (str, optional):
        Provide the path to the output directory. The result will be located at
        `projectDir/CSPOT/csExport/`. 

    fileName (str, optional):
        Specify the name of the CSV output file. If you don't provide a file name, t
        he default name `csExport.csv` will be assigned.

    raw (bool, optional):
        If `True` raw data will be returned instead of the CSPOT scaled data.

    CellId (str, optional):
        Specify the column name that holds the cell ID (a unique name given to each cell).

    verbose (bool, optional):
        If True, print detailed information about the process to the console.  

Returns:
    CSV files (.csv):
        The `.csv` files can be found under `projectDir/CSPOT/csExport/`

Example:
        ```python
        # path to files needed for csExport
        projectDir = '/Users/aj/Documents/cspotExampleData'
        csObject = projectDir + '/CSPOT/csObject/exampleImage_cspotPredict.ome.h5ad'

        cs.csExport(csObject,
               projectDir,
               fileName=None,
               raw=False,
               CellID='CellID',
               verbose=True)

        # Same function if the user wants to run it via Command Line Interface
        python csExport.py \
            --csObject /Users/aj/Documents/cspotExampleData/CSPOT/cspotOutput/exampleImage_cspotPredict.ome.h5ad \
            --projectDir /Users/aj/Documents/cspotExampleData

        ```

    """

    # Load the andata object
    if isinstance(csObject, str):
        if fileName is None:
            imid = pathlib.Path(csObject).stem
        else:
            imid = str(fileName)
        csObject = ad.read(csObject)
    else:
        if fileName is None:
            imid = "csExport"
        else:
            imid = str(fileName)
        csObject = csObject

    # Expression matrix & obs data
    if raw is True:
        data = pd.DataFrame(
            csObject.raw.X, index=csObject.obs.index, columns=csObject.var.index
        )
    else:
        data = pd.DataFrame(
            csObject.X, index=csObject.obs.index, columns=csObject.var.index
        )
    meta = pd.DataFrame(csObject.obs)
    # Merge the two dataframes
    merged = pd.concat([data, meta], axis=1, sort=False)

    # Add a column to save cell-id
    # make cellID the first column
    if CellID in merged.columns:
        first_column = merged.pop(CellID)
        merged.insert(0, CellID, first_column)
    else:
        merged["CellID"] = merged.index
        first_column = merged.pop(CellID)
        merged.insert(0, CellID, first_column)

    # reset index
    merged = merged.reset_index(drop=True)

    # create a folder to hold the results
    folderPath = pathlib.Path(projectDir + "/CSPOT/csExport/")
    folderPath.mkdir(exist_ok=True, parents=True)

    # extract some of the data stored in .uns and save
    if hasattr(csObject, "uns") and "cspotOutput" in csObject.uns:
        cspotOutput = csObject.uns["cspotOutput"]
        cspotOutput.index = merged["CellID"]
        cspotOutput.to_csv(folderPath / "cspotOutput.csv")
    if hasattr(csObject, "uns") and "csScore" in csObject.uns:
        csScore = csObject.uns["csScore"]
        csScore.index = merged["CellID"]
        csScore.to_csv(folderPath / "csScore.csv")

    # scaled data
    merged.to_csv(folderPath / f"{imid}.csv", index=False)

    # Finish Job
    if verbose is True:
        print(
            'Contents of the csObject have been exported to "'
            + str(projectDir)
            + '/CSPOT/csExport"'
        )