@Override
	public Collection<BioPAXElement> generate(Match match, int... ind)
	{
		Collection<BioPAXElement> result = new HashSet<BioPAXElement>();

		PhysicalEntity pe = (PhysicalEntity) match.get(ind[0]);

		for (Interaction inter : pe.getParticipantOf())
		{
			if (inter instanceof Conversion)
			{
				Conversion cnv = (Conversion) inter;
				ConversionDirectionType dir = getDirection(cnv);

				// do not get blacklisted small molecules
				if (blacklist != null && blacklist.isUbique(pe, cnv, dir, type)) continue;

				if (dir == ConversionDirectionType.REVERSIBLE)
				{
					result.add(cnv);
				}
				else if (dir == ConversionDirectionType.RIGHT_TO_LEFT &&
					(type == RelType.INPUT ? cnv.getRight().contains(pe) : cnv.getLeft().contains(pe)))
				{
					result.add(cnv);
				}
				// Note that null direction is treated as if LEFT_TO_RIGHT. This is not a best
				// practice, but it is a good approximation.
				else if ((dir == ConversionDirectionType.LEFT_TO_RIGHT || dir == null) &&
					(type == RelType.INPUT ? cnv.getLeft().contains(pe) : cnv.getRight().contains(pe)))
				{
					result.add(cnv);
				}
			}
		}

		return result;
	}
@ Override public Collection < BioPAXElement > generate ( Match match , int ... ind ) { Collection < BioPAXElement > result = new HashSet < BioPAXElement > ( ) ; PhysicalEntity pe = ( PhysicalEntity ) match . get ( ind [ 0 ] ) ; for ( Interaction inter : pe . getParticipantOf ( ) ) { if ( inter instanceof Conversion ) { Conversion cnv = ( Conversion ) inter ; ConversionDirectionType dir = getDirection ( cnv ) ; if ( blacklist != null && blacklist . isUbique ( pe , cnv , dir , type ) ) continue ; if ( dir == ConversionDirectionType . REVERSIBLE ) { result . add ( cnv ) ; } else if ( dir == ConversionDirectionType . RIGHT_TO_LEFT && ( type == RelType . INPUT ? cnv . getRight ( ) . contains ( pe ) : cnv . getLeft ( ) . contains ( pe ) ) ) { result . add ( cnv ) ; } else if ( ( dir == ConversionDirectionType . LEFT_TO_RIGHT || dir == null ) && ( type == RelType . INPUT ? cnv . getLeft ( ) . contains ( pe ) : cnv . getRight ( ) . contains ( pe ) ) ) { result . add ( cnv ) ; } } } return result ; }
Identifies the conversion direction and gets the related participants.
@param match current pattern match
@param ind mapped indices
@return input or output participants