PossibleSignatures[d_,k_]:=Flatten[Union[Table[IntegerPartitions[i,k],{i,0,d}]],1]

ListOfSigs=PossibleSignatures[50,50];

tt=Table[Length[PossibleSignatures[i,50]],{i,0,50}];

PositionFinder[signature_,k_]:=tt[[Total[signature]]]+Position[IntegerPartitions[Total[signature],k],signature][[1,1]]

MultiplySigs[SigToMultiply_,SymmN_,k_]:=Module[{OutCollection,AddingSet,removeset,leftovers,newsig,newcount,TallyInfo},
OutCollection={};
AddingSet=DeleteDuplicates[Subsets[SigToMultiply,SymmN]];
While[AddingSet≠{},
removeset=AddingSet[[1]];
leftovers=SigToMultiply;
While[removeset≠{},
leftovers=Drop[leftovers,Position[leftovers,removeset[[1]]][[1]]];
removeset=Drop[removeset,1]
];
removeset=Join[AddingSet[[1]]+1,Table[1,{i,1,SymmN-Length[AddingSet[[1]]]}]];
newsig=Sort[Join[leftovers,removeset],Greater];
TallyInfo=Tally[removeset];
newcount=Product[Binomial[Count[newsig,TallyInfo[[i,1]]],TallyInfo[[i,2]]],{i,1,Length[TallyInfo]}];
If[Length[newsig]≤k,
OutCollection=Append[OutCollection,{newsig,newcount}],
];
AddingSet=Drop[AddingSet,1]
];
OutCollection
]

Convert[collection_,k_]:=
Module[{ConvertedOutput,loopcount},
ConvertedOutput={};
loopcount=1;
While[loopcount≤Length[collection],
ConvertedOutput=Append[ConvertedOutput,{PositionFinder[collection[[loopcount,1]],k],collection[[loopcount,2]]}];
loopcount=loopcount+1
];
ConvertedOutput
]

MergeDuplicates[SetToKeep_,NewSetToAdd_]:=
Module[{outset,loop,place},
outset=SetToKeep;
loop=1;
While[loop≤Length[NewSetToAdd],
place=Position[SetToKeep[[All,1]],NewSetToAdd[[loop,1]]];
If[place≠{},
outset=ReplacePart[outset,{place[[1,1]],2}->outset[[place[[1,1]],2]]+NewSetToAdd[[loop,2]]],
outset=Append[outset,NewSetToAdd[[loop]]]
];
loop=loop+1
];
outset
]

SetMultiplySigs[SigSetToMultiply_,SymmN_,k_]:=
Module[{outgroup,SetCount,UntamedSig,SigCount,newsigs},
outgroup={};
SetCount=1;
While[SetCount≤Length[SigSetToMultiply],
{UntamedSig,SigCount}=SigSetToMultiply[[SetCount]];
UntamedSig=ListOfSigs[[UntamedSig]];
newsigs=MultiplySigs[UntamedSig,SymmN,k];
newsigs=Table[{newsigs[[i,1]],newsigs[[i,2]]*SigCount},{i,1,Length[newsigs]}];
outgroup=MergeDuplicates[outgroup,newsigs];
SetCount=SetCount+1
];
outgroup=Convert[outgroup,k];
Sort[outgroup]
]

ElemSet[d0_,k_]:=Flatten[Union[Table[IntegerPartitions[j,All,Table[i,{i,2,k}]],{j,0,d0}]],1]

ElemBaseSet=ElemSet[50,50];

ee=Table[Length[ElemSet[i,50]],{i,0,50}];

ElemPositionFinder[signature_,k_]:=If[signature≠{},ee[[Total[signature]]],0]+Position[IntegerPartitions[Total[signature],All,Table[i,{i,2,k}]],signature][[1,1]]

ConversionSetMaker[k_]:=
Module[{NextConvert,SetToMultiply},
ConversionSet={{{1,1}}};
NextConvert=2;
While[NextConvert≤Length[ElemBaseSet],
If[Mod[NextConvert,100]==0,Print[NextConvert];Print[DateList[]]];
SetToMultiply=ConversionSet[[ElemPositionFinder[Drop[ElemBaseSet[[NextConvert]],-1],k]]];
ConversionSet=Append[ConversionSet,SetMultiplySigs[SetToMultiply,Last[ElemBaseSet[[NextConvert]]],k]];
NextConvert=NextConvert+1
];
]

ConversionSetMaker[50]