Skip to content

Commit f8948b2

Browse files
committed
adding tags analysis to software
1 parent d190881 commit f8948b2

File tree

4 files changed

+34
-9
lines changed

4 files changed

+34
-9
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/usr/bin/env python
2+
3+
# This is an example of generating image packages from within python
4+
5+
import os
6+
os.environ['MESSAGELEVEL'] = 'CRITICAL'
7+
8+
from singularity.analysis.classify import get_tags
9+
10+
package = "python:3.6.0.img.zip"
11+
12+
# The algorithm works as follows:
13+
# 1) first compare package to set of base OS (provided with shub)
14+
# 2) subtract the most similar os from image, leaving "custom" files
15+
# 3) organize custom files into dict based on folder name
16+
# 4) return search_folders as tags
17+
18+
# Default tags will be returned as software in "bin"
19+
tags = get_tags(package=package)
20+
21+
# Most similar OS found to be %s debian:7.11
22+
134 KB
Binary file not shown.

singularity/analysis/compare.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
import requests
1414
from singularity.logman import bot
1515
from singularity.utils import get_installdir
16-
16+
from singularity.analysis.utils import get_packages
1717
from singularity.views.utils import get_container_contents
1818

1919
from singularity.package import (
2020
load_package,
21-
package
21+
package as make_package
2222
)
2323

2424
import pandas
@@ -74,8 +74,8 @@ def compare_containers(container1=None,container2=None,by=None,
7474
"total2": len(container2_guts[b])}
7575

7676
bot.logger.info("Intersect has length %s",len(intersect))
77-
bot.logger.info("Unique to %s: %s",container1,len(unique1))
78-
bot.logger.info("Unique to %s: %s",container2,len(unique2))
77+
bot.logger.info("Unique to 1: %s",len(unique1))
78+
bot.logger.info("Unique to 2: %s",len(unique2))
7979
comparisons[b] = comparison
8080

8181
return comparisons
@@ -122,20 +122,18 @@ def compare_packages(packages_set1=None,packages_set2=None,by=None):
122122
will be used (os vs. docker library)
123123
:by: metrics to compare by (files.txt and or folders.txt)
124124
'''
125-
package_folder = "%s/analysis/packages" %get_installdir()
126-
127125
if packages_set1 == None:
128-
packages_set1 = glob("%s/docker-library/*.zip" %(package_folder))
126+
packages_set1 = get_packages('docker-library')
129127
if packages_set2 == None:
130-
packages_set2 = glob("%s/docker-os/*.zip" %(package_folder))
128+
packages_set2 = get_packages('docker-os')
131129

132130
if by == None:
133131
by = ['files.txt']
134132

135133
if not isinstance(by,list):
136134
by = [by]
137135
if not isinstance(packages_set1,list):
138-
packages_set1 = [package_set1]
136+
packages_set1 = [packages_set1]
139137
if not isinstance(packages_set2,list):
140138
packages_set2 = [packages_set2]
141139

singularity/analysis/utils.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,3 +55,8 @@ def list_package_families():
5555
'''
5656
package_base = "%s/analysis/packages" %(install_dir)
5757
return glob("%s/*" %(package_base))
58+
59+
60+
def get_package_base():
61+
'''returns base folder of packages'''
62+
return "%s/analysis/packages" %(install_dir)

0 commit comments

Comments
 (0)