Sample, py script to migrate sample ids
This commit is contained in:
		
							parent
							
								
									0227615cb2
								
							
						
					
					
						commit
						01143fd5a5
					
				| @ -0,0 +1,47 @@ | |||||||
|  | # script used to fix generated ids of samples (`DD` was used in pattern | ||||||
|  | # instead of `dd`, so day in year instead of day in month) | ||||||
|  | 
 | ||||||
|  | import os | ||||||
|  | import re | ||||||
|  | from datetime import datetime | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def samples(array, directory): | ||||||
|  |     for f in os.listdir(directory): | ||||||
|  |         name = os.path.join(directory, f) | ||||||
|  |         if os.path.isdir(name): | ||||||
|  |             samples(array, name) | ||||||
|  |         elif name.endswith("java") or name.endswith("kt"): | ||||||
|  |             array.append(name) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def process(sample): | ||||||
|  |     with open(sample, "r+") as f: | ||||||
|  |         code = f.read() | ||||||
|  |         m = re.search( | ||||||
|  |             r"(?:\s\S)*@MarkwonSampleInfo\(\s*id\s*\=\s*?\"(\d+)\"(?:\s\S)*", code) | ||||||
|  |         if not m: | ||||||
|  |             print( | ||||||
|  |                 "File {} does not contain `@MarkwonSampleInfo` annotation".format(sample)) | ||||||
|  |         else: | ||||||
|  |             group = m.group(1) | ||||||
|  |             # `%j` is day in year modifier | ||||||
|  |             # for day in year we take substring starting when month ends (year and month are fixed width) | ||||||
|  |             #   and end excluding hour, minute and second (also fixed) | ||||||
|  |             day = datetime.strptime("{} {}".format( | ||||||
|  |                 group[6:-6], group[0:4]), "%j %Y").day | ||||||
|  |             id = group[:6] + "{:02d}".format(day) + group[-6:] | ||||||
|  |             print("{} `{}` -> `{}`".format(sample, group, id)) | ||||||
|  |             updated_code = code.replace(group, id, 1) | ||||||
|  | 
 | ||||||
|  |             # https://stackoverflow.com/a/15976014 | ||||||
|  |             f.seek(0) | ||||||
|  |             f.write(updated_code) | ||||||
|  |             f.truncate() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     array = [] | ||||||
|  |     samples(array, ".") | ||||||
|  |     for sample in array: | ||||||
|  |         process(sample) | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dimitry Ivanov
						Dimitry Ivanov