Murali-group / Beeline

BEELINE: evaluation of algorithms for gene regulatory network inference
GNU General Public License v3.0
171 stars 53 forks source link

docker image #54

Open ghost opened 3 years ago

ghost commented 3 years ago

Hi, I am doing an internship and my supervisor told me to read your paper and try to compare your results with newer gene regulatory networking algorithms like CellOracle on the same datasets. The cluster I'm currently working with only supports Singulartiy and not Docker. But i found out that Singularity is capable of pulling docker images. After many attempts it always says: FATAL: While making image from oci registry: failed to get checksum for docker://grnbeeline/pidc:latest: Error reading manifest latest in docker.io/grnbeeline/pidc: manifest unknown: manifest unknown

I wanted to make sure if anyone had the same problems working with Singularity or if theres even a solution for my problem many thanks!

ktakers commented 3 years ago

Hello, thank you for using BEELINE. I believe the error is related to the default : latest tag for the images. Please double check that the singularity pull includes the tags from the docker hub repository, such as grnbeeline/pidc:base for PIDC ( https://hub.docker.com/r/grnbeeline/pidc/tags?page=1&ordering=last_updated ).

$ singularity pull docker://grnbeeline/pidc FATAL: While making image from oci registry: failed to get checksum for docker://grnbeeline/pidc: Error reading manifest latest in docker.io/grnbeeline/pidc: manifest unknown: manifest unknown

$ singularity pull docker://grnbeeline/pidc:base INFO: Converting OCI blobs to SIF format INFO: Starting build...

Currently all of the tags in the BEELINE docker hub repository are :base, with the exception of the updated version for SINGE: grnbeeline/singe:0.4.1 ( https://hub.docker.com/r/grnbeeline/singe/tags?page=1&ordering=last_updated )

adamklie commented 1 year ago

Following up on this slightly old issue. It's not immediately clear to me how I could substitute in singularity images into the workflow. Is it as simple as pulling the containers and modifying each XXXrunner.py file to use a singularity run command as opposed to a docker run command.

As an example in the genie3Runner.py file:

def run(RunnerObj):
    '''
    Function to run GENIE3 algorithm

    :param RunnerObj: An instance of the :class:`BLRun`
    '''
    inputPath = "data" + str(RunnerObj.inputDir).split(str(Path.cwd()))[1] + \
                    "/GENIE3/ExpressionData.csv"
    # make output dirs if they do not exist:
    outDir = "outputs/"+str(RunnerObj.inputDir).split("inputs/")[1]+"/GENIE3/"
    os.makedirs(outDir, exist_ok = True)

    outPath = "data/" +  str(outDir) + 'outFile.txt'
    cmdToRun = ' '.join(['singularity run --rm -v', str(Path.cwd())+':/data/ --expose=41269', 
                         'grnbeeline/arboreto:base /bin/sh -c \"time -v -o', "data/" + str(outDir) + 'time.txt', 'python runArboreto.py --algo=GENIE3',
                         '--inFile='+inputPath, '--outFile='+outPath, '\"'])

    print(cmdToRun)
    os.system(cmdToRun)